[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>&</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>&</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" exce