You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2021/01/20 08:27:20 UTC

[myfaces-homepage] 01/46: initial commit

This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/myfaces-homepage.git

commit 804e666702c6edb66eddb421ae896832e0092a5f
Author: Thomas Andraschko <ta...@apache.org>
AuthorDate: Fri Aug 7 13:10:06 2020 +0200

    initial commit
---
 commons.md                           |  27 ++++
 community.md                         |  34 +++++
 core.md                              |  12 ++
 core11.md                            |  57 ++++++++
 core12.md                            |  86 ++++++++++++
 core20.md                            | 220 +++++++++++++++++++++++++++++
 core21.md                            | 219 +++++++++++++++++++++++++++++
 core22.md                            | 257 ++++++++++++++++++++++++++++++++++
 core23.md                            | 258 +++++++++++++++++++++++++++++++++++
 core23next.md                        | 248 +++++++++++++++++++++++++++++++++
 core30.md                            | 242 ++++++++++++++++++++++++++++++++
 coreConceptsCacheElExpressions.md    |  76 +++++++++++
 coreConceptsELResolverOrdering.md    |  46 +++++++
 coreConceptsImmediateAttribute.md    | 130 ++++++++++++++++++
 coreConceptsViewPooling.md           | 135 ++++++++++++++++++
 coreConceptsWhitespaceCompression.md |  30 ++++
 coregettingstarted.md                |  79 +++++++++++
 extcdi.md                            |  22 +++
 extscripting.md                      |  17 +++
 extvalidator.md                      |  22 +++
 home.md                              |  17 +++
 index.html                           |  55 ++++++++
 menu.md                              |  36 +++++
 navbar.md                            |   3 +
 news.md                              |  13 ++
 orchestra.md                         |  26 ++++
 resources/css/template.css           |  62 +++++++++
 resources/images/apache.png          | Bin 0 -> 152842 bytes
 resources/images/myfaces.png         | Bin 0 -> 310386 bytes
 sw.js                                |  95 +++++++++++++
 tomahawk.md                          |  17 +++
 trinidad.md                          |  23 ++++
 32 files changed, 2564 insertions(+)

diff --git a/commons.md b/commons.md
new file mode 100644
index 0000000..ab02686
--- /dev/null
+++ b/commons.md
@@ -0,0 +1,27 @@
+# Apache MyFaces Extensions Scripting / Ext-Scripting
+
+> :warning: **This project is in maintaneance mode**
+
+This project contains non-renderkit-specific code that can be used with any JSF framework.
+
+The modules available (each one is a jar file) are listed below:
+
+* myfaces-components
+* myfaces-converters
+* myfaces-validators
+* myfaces-commons-utils
+
+Myfaces Commons comes with jar compatible with JSF 1.1 (but those packages are JDK 1.5 compatible), JSF 1.2 and JSF 2.0.
+
+
+## Links
+
+* [Wiki](https://cwiki.apache.org/confluence/display/MYFACES/MyFaces+Commons+User+Guide)
+* [SVN ViewVC](https://svn.apache.org/viewvc/myfaces/commons/trunk/)
+* [SVN](https://svn.apache.org/repos/asf/myfaces/commons/trunk/)
+
+
+
+
+
+
diff --git a/community.md b/community.md
new file mode 100644
index 0000000..b2a26bf
--- /dev/null
+++ b/community.md
@@ -0,0 +1,34 @@
+# Community
+
+## Getting Involved
+Everybody is welcome to get involved with our community. You can find general information at http://apache.org/foundation/getinvolved.html and http://apache.org/foundation/how-it-works.html. The following sections provides some details about the different levels of getting involved.
+
+
+### Contributors
+Before you get a committer you have to contribute to our effort. E.g. you can help users, participate in discussions on the dev list, submit patches,…​ . Therefore, it’s essential to file a/n ICLA or CCLA and send it to secretary at apache dot org (or fax it) as early as possible.
+
+If you would like to submit a patch through JIRA, you can have a look at the suggested approach.
+
+### Committers
+Before you read this section, please ensure that you have read the contributor section. All of you are welcome to join our development effort. Subscribe our mailing list for developers and start contributing and help users.
+
+Optionally subscribe our mailing list for commits.
+
+Furthermore, you can check our mail-archives.
+
+Further details are available at http://www.apache.org/dev/.
+
+
+## Mailing lists
+
+| List | Subscribe | Unsubscribe | Archive | Mirrors |
+| ---- | ---- | ---- | ---- | ---- |
+| Users | [Subscribe](mailto:users-subscribe@myfaces.apache.org) | [Unsubscribe](mailto:users-unsubscribe@myfaces.apache.org) | [lists.apache.org](https://lists.apache.org/list.html?users@myfaces.apache.org)  | [markmail.org](http://markmail.org/list/org.apache.myfaces.users) <br/> [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/myfaces-users) <br/> [mail-archive.com](http://www.mail-archive.com/users@myfaces.apache.org/) <br/>  [nabble.com](http://myfaces.10567.n7.na [...]
+| Developer | [Subscribe](mailto:dev-subscribe@myfaces.apache.org) | [Unsubscribe](mailto:dev-unsubscribe@myfaces.apache.org) | [lists.apache.org](https://lists.apache.org/list.html?dev@myfaces.apache.org)  | [markmail.org](http://markmail.org/list/org.apache.myfaces.dev) <br/> [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/myfaces-dev) <br/> [mail-archive.com](http://www.mail-archive.com/dev@myfaces.apache.org/) <br/>  [nabble.com](http://myfaces.10567.n7.nabble.com [...]
+| Annoucements | [Subscribe](mailto:announce-subscribe@myfaces.apache.org) | [Unsubscribe](mailto:announce-unsubscribe@myfaces.apache.org) | [lists.apache.org](https://lists.apache.org/list.html?announce@myfaces.apache.org)  | [markmail.org](http://markmail.org/list/org.apache.myfaces.announce) <br/> [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/myfaces-announce) |
+| Commits | [Subscribe](mailto:commits-subscribe@myfaces.apache.org) | [Unsubscribe](mailto:commits-unsubscribe@myfaces.apache.org) | [lists.apache.org](https://lists.apache.org/list.html?commits@myfaces.apache.org)  | [markmail.org](http://markmail.org/list/org.apache.myfaces.commits) <br/> [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/myfaces-commits) |
+| Private (only for PMC members) | [Subscribe](mailto:private-subscribe@myfaces.apache.org) | [Unsubscribe](mailto:private-unsubscribe@myfaces.apache.org) |  | |
+| Notification | [Subscribe](mailto:notifications-subscribe@myfaces.apache.org) | [Unsubscribe](mailto:notifications-unsubscribe@myfaces.apache.org) | [lists.apache.org](https://lists.apache.org/list.html?notifications@myfaces.apache.org)  | [markmail.org](http://markmail.org/list/org.apache.myfaces.notifications) <br/> [mail-archives.apache.org](http://mail-archives.apache.org/mod_mbox/myfaces-notifications) |
+
+
+
diff --git a/core.md b/core.md
new file mode 100644
index 0000000..465ee23
--- /dev/null
+++ b/core.md
@@ -0,0 +1,12 @@
+# Apache MyFaces Core
+
+Apache MyFaces Core is the implementation of the JavaServer™ Faces (JSF) specification and Jakarta Faces specification.
+
+## Build
+Checkout from [Apache GitBox](https://gitbox.apache.org/repos/asf?p=myfaces.git) or [GitHub](https://github.com/apache/myfaces) and run `mvn clean install`
+
+## Useful links
+* Nightly Builds: [Travis](https://travis-ci.org/apache/myfaces)
+* Issue Management: [JIRA](https://issues.apache.org/jira/projects/MYFACES/) 
+* Javadocs: [javadoc.io](https://javadoc.io/doc/org.apache.myfaces.core/myfaces-api/latest/index.html)
+* Wiki: [Wiki](https://cwiki.apache.org/confluence/display/MYFACES/Index)
diff --git a/core11.md b/core11.md
new file mode 100644
index 0000000..dc96279
--- /dev/null
+++ b/core11.md
@@ -0,0 +1,57 @@
+# Apache MyFaces Core 1.1
+
+Implementation of the JavaServer™ Faces (JSF) 1.1 specification.
+
+## Source
+[Apache GitBox](https://gitbox.apache.org/repos/asf?p=myfaces.git;a=shortlog;h=refs/heads/1.1.x) / [GitHub](https://github.com/apache/myfaces/tree/1.1.x)
+
+## Downloads
+
+|     | Mirrors                                                                                                                      | Checksum                                                                                                                     | Signature                                                                                                                                |
+|-----------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
+| binary (tar.gz) | [myfaces-core-assembly-1.1.10-bin.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-1.1.10-bin.tar.gz) | [myfaces-core-assembly-1.1.10-bin.tar.gz.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-1.1.10-bin.tar.gz.md5) | [myfaces-core-assembly-1.1.10-bin.tar.gz.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-1.1.10-bin.tar.gz.asc) |
+| binary (zip)    | [myfaces-core-assembly-1.1.10-bin.zip](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-1.1.10-bin.zip)       | [myfaces-core-assembly-1.1.10-bin.zip.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-1.1.10-bin.zip.md5)       | [myfaces-core-assembly-1.1.10-bin.zip.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-1.1.10-bin.zip.asc)       |
+| source (tar.gz) | [myfaces-core-assembly-1.1.10-src.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-1.1.10-src.tar.gz)   | [myfaces-core-assembly-1.1.10-src.tar.gz.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-1.1.10-src.tar.gz.md5)   | [myfaces-core-assembly-1.1.10-src.tar.gz.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-1.1.10-src.tar.gz.asc)   |
+| source (zip)    | [myfaces-core-assembly-1.1.10-src.zip](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-1.1.10-src.zip)         | [myfaces-core-assembly-1.1.10-src.zip.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-1.1.10-src.zip.md5)         | [myfaces-core-assembly-1.1.10-src.zip.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-1.1.10-src.zip.asc)         |
+
+## Dependency
+```xml
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-api</artifactId>
+  <version>1.1.10</version>
+</dependency>
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-impl</artifactId>
+  <version>1.1.10</version>
+</dependency>
+```
+
+## Configuration
+
+MyFaces core behavior can be customized, adding some web config params into your WEB-INF/web.xml or META-INF/web-fragment.xml file for your custom project in this way:
+
+```xml
+<context-param>
+	<param-name>org.apache.myfaces.SOME_USEFUL_PARAM</param-name>
+	<param-value>someValue</param-value>
+</context-param>
+```
+
+> :warning: **The table below uses `o.a.m` as shortcut for `org.apache.myfaces`**
+
+| Name | Since | Default value | Description |
+| ---- | ---- | ---- | ---- | 
+| o.a.m.USE_ENCRYPTION | 1.1.8 | | Indicate if the view state is encrypted or not |
+| o.a.m.SECRET | 1.1 | |  Defines the secret (Base64 encoded) used to initialize the secret key for encryption algorithm|
+| o.a.m.ALGORITHM | 1.1 | | Indicate the encryption algorithm used for encrypt the view state |
+| o.a.m.SECRET.CACHE | 1.1 | | If is set to "false", the secret key used for encryption algorithm is not cached |
+| o.a.m.ALGORITHM.IV | 1.1 | | Defines the initialization vector (Base64 encoded) used for the encryption algorithm |
+| o.a.m.ALGORITHM.PARAMETERS | 1.1 | | Defines the default mode and padding used for the encryption algorithm |
+| o.a.m.SERIAL_FACTORY | 1.1 | | Defines the factory class name using for serialize/deserialize the view state returned by state manager into a byte array |
+| o.a.m.COMPRESS_STATE_IN_CLIENT | 1.1 | | Indicate if the view state should be compressed before encrypted(optional) and encoded |
+| o.a.m.MAC_ALGORITHM | | | Indicate the algorithm used to calculate the Message Authentication Code that is added to the view state |
+| o.a.m.MAC_SECRET | | | Define the initialization code that are used to initialize the secret key used on the Message Authentication Code algorithm |
+| o.a.m.MAC_SECRET.CACHE | | | If is set to "false", the secret key used for MAC algorithm is not cached |
+
diff --git a/core12.md b/core12.md
new file mode 100644
index 0000000..58190f1
--- /dev/null
+++ b/core12.md
@@ -0,0 +1,86 @@
+# Apache MyFaces Core 1.2
+
+Implementation of the JavaServer™ Faces (JSF) 1.2 specification.
+
+## Source
+[Apache GitBox](https://gitbox.apache.org/repos/asf?p=myfaces.git;a=shortlog;h=refs/heads/1.2.x) / [GitHub](https://github.com/apache/myfaces/tree/1.2.x)
+
+## Downloads
+
+|     | Mirrors                                                                                                                      | Checksum                                                                                                                     | Signature                                                                                                                                |
+|-----------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
+| binary (tar.gz) | [myfaces-core-assembly-1.2.12-bin.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-1.2.12-bin.tar.gz) | [myfaces-core-assembly-1.2.12-bin.tar.gz.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-1.2.12-bin.tar.gz.md5) | [myfaces-core-assembly-1.2.12-bin.tar.gz.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-1.2.12-bin.tar.gz.asc) |
+| binary (zip)    | [myfaces-core-assembly-1.2.12-bin.zip](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-1.2.12-bin.zip)       | [myfaces-core-assembly-1.2.12-bin.zip.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-1.2.12-bin.zip.md5)       | [myfaces-core-assembly-1.2.12-bin.zip.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-1.2.12-bin.zip.asc)       |
+| source (tar.gz) | [myfaces-core-assembly-1.2.12-src.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-1.2.12-src.tar.gz)   | [myfaces-core-assembly-1.2.12-src.tar.gz.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-1.2.12-src.tar.gz.md5)   | [myfaces-core-assembly-1.2.12-src.tar.gz.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-1.2.12-src.tar.gz.asc)   |
+| source (zip)    | [myfaces-core-assembly-1.2.12-src.zip](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-1.2.12-src.zip)         | [myfaces-core-assembly-1.2.12-src.zip.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-1.2.12-src.zip.md5)         | [myfaces-core-assembly-1.2.12-src.zip.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-1.2.12-src.zip.asc)         |
+
+## Dependency
+```xml
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-api</artifactId>
+  <version>1.2.12</version>
+</dependency>
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-impl</artifactId>
+  <version>1.2.12</version>
+</dependency>
+```
+
+## Configuration
+
+MyFaces core behavior can be customized, adding some web config params into your WEB-INF/web.xml or META-INF/web-fragment.xml file for your custom project in this way:
+
+```xml
+<context-param>
+	<param-name>org.apache.myfaces.SOME_USEFUL_PARAM</param-name>
+	<param-value>someValue</param-value>
+</context-param>
+```
+
+> :warning: **The table below uses `o.a.m` as shortcut for `org.apache.myfaces`**
+
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- | 
+| javax.faces.STATE_SAVING_METHOD            | 1.1  |server                             | server,client |  Define the state method to be used. There are two different options defined by the specification: "client" and "server" state. <br><br> When "client" state is configured, all state information required to create the tree is embedded within the data rendered to the client. Note that because data received from a remote client must always be treated as "tainted", care must be taken whe [...]
+| javax.faces.DEFAULT_SUFFIX                 | 1.1  |.jsp                               |               |  Indicate the default suffix to derive the file URI if extension mapping is used.                                                                                                                                                                                                                                                                                                                  [...]
+| javax.faces.CONFIG_FILES                   | 1.1  |                                   |               |  Comma separated list of URIs of (additional) faces config files. (e.g. /WEB-INF/my-config.xml)See JSF 1.0 PRD2, 10.3.2 Attention: You do not need to put /WEB-INF/faces-config.xml in here.                                                                                                                                                                                                       [...]
+| javax.faces.LIFECYCLE_ID                   | 1.1  |                                   |               |  Identify the Lifecycle instance to be used.                                                                                                                                                                                                                                                                                                                                                       [...]
+| o.a.m.ERROR_HANDLING          | 1.2.4| true                               | true,false     | Indicate if myfaces is responsible to handle errors. See http://wiki.apache.org/myfaces/Handling_Server_Errors for details.                                                                                                                                                                                                                                                                                   [...]
+| o.a.m.ERROR_HANDLER           | 1.2.4|                                    |                | If you want to choose a different class for handling the exception. <br><br> The error-handler needs to include the following methods: <br><br><br>handleException(FacesContext fc, Exception ex) <br>handleExceptionList(FacesContext facesContext, List exceptionList)<br>handleThrowable(FacesContext facesContext, Throwable ex) |
+| o.a.m.ERROR_TEMPLATE_RESOURCE | 1.2.4| META-INF/rsc/myfaces-dev-error.xml |                |                                                                                                                                                                                                                                                                                                                                                                                                               [...]
+| o.a.m.DEBUG_TEMPLATE_RESOURCE | 1.2.4| META-INF/rsc/myfaces-dev-debug.xml |                |                                                                                                                                                                                                                                                                                                                                                                                                               [...]
+| o.a.m.NUMBER_OF_VIEWS_IN_SESSION           | 1.1           |20                                                        |                                           |  Only applicable if state saving method is "server" (= default). Defines the amount (default = 20) of the latest views are stored in session.                                                                                                                                                                                          [...]
+| o.a.m.SERIALIZE_STATE_IN_SESSION           | 1.1           |true                                                      |                                           |  Only applicable if state saving method is "server" (= default). If true (default) the state will be serialized to a byte stream before it is written to the session. If false the state will not be serialized to a byte stream.                                                                                                      [...]
+| o.a.m.COMPRESS_STATE_IN_SESSION            | 1.1           |true                                                      |                                           |  Only applicable if state saving method is "server" (= default) and if org.apache.myfaces.SERIALIZE_STATE_IN_SESSION is true (= default). If true (default) the serialized state will be compressed before it is written to the session. If false the state will not be compressed.                                                    [...]
+| o.a.m.CACHE_OLD_VIEWS_IN_SESSION_MODE      | 1.2.5         |off                                                       | off, no, hard-soft, soft, soft-weak, weak |  Define the way of handle old view references(views removed from session), making possible to store it in a cache, so the state manager first try to get the view from the session. If is it not found and soft or weak ReferenceMap is used, it try to get from it. Only applicable if state saving method is "server" (= default). < [...]
+| o.a.m.config.annotation.LifecycleProvider  | 1.1           |                                                          |                                           |                                                                                                                                                                                                                                                                                                                                        [...]
+| o.a.m.EL_RESOLVER_COMPARATOR               | 1.2.10, 2.0.2 |                                                          |                                           |                                                                                                                                                                                                                                                                                                                                        [...]
+| o.a.m.PRETTY_HTML                          | 1.1           |true                                                      | true,false                                |  If true, rendered HTML code will be formatted, so that it is "human readable". i.e. additional line separators and whitespace will be written, that do not influence the HTML code. Default: "true"                                                                                                                                   [...]
+| o.a.m.ALLOW_JAVASCRIPT                     | 1.1           |true                                                      | true,false                                |  This parameter tells MyFaces if javascript code should be allowed in the rendered HTML output. If javascript is allowed, command_link anchors will have javascript code that submits the corresponding form. If javascript is not allowed, the state saving info and nested parameters ill be added as url parameters. Default: "true [...]
+| o.a.m.DETECT_JAVASCRIPT                    | 1.1           |false                                                     | true,false                                |                                                                                                                                                                                                                                                                                                                                        [...]
+| o.a.m.AUTO_SCROLL                          | 1.1           |false                                                     | true,false                                |  If true, a javascript function will be rendered that is able to restore the former vertical scroll on every request. Convenient feature if you have pages with long lists and you do not want the browser page to always jump to the top if you trigger a link or button action that stays on the same page. Default: "false"         [...]
+| o.a.m.READONLY_AS_DISABLED_FOR_SELECTS     | 1.1           |true                                                      | true,false                                |                                                                                                                                                                                                                                                                                                                                        [...]
+| o.a.m.CONFIG_REFRESH_PERIOD                | 1.1           |2                                                         |                                           |                                                                                                                                                                                                                                                                                                                                        [...]
+| o.a.m.VIEWSTATE_JAVASCRIPT                 | 1.1           |false                                                     | true,false                                |                                                                                                                                                                                                                                                                                                                                        [...]
+| o.a.m.RENDER_VIEWSTATE_ID                  | 1.1           |true                                                      | true,false                                |                                                                                                                                                                                                                                                                                                                                        [...]
+| o.a.m.STRICT_XHTML_LINKS                   | 1.1           |true                                                      | true,false                                |                                                                                                                                                                                                                                                                                                                                        [...]
+| o.a.m.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON   | 1.2.3         |false                                                     | true,false                                |  This param renders the clear javascript on button necessary only for compatibility with hidden fields feature of myfaces. This is done because jsf ri does not render javascript on onclick method for button, so myfaces should do this.                                                                                             [...]
+| o.a.m.RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS | 1.2.9         |false                                                     | true,false                                |  This param renders hidden fields at the end of h:form for link params when h:commandLink + f:param is used, instead use javascript to create them. Set this param to true also enables org.apache.myfaces.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON automatically to ensure consistency. This feature is required to support Windows Mobile  [...]
+| o.a.m.SAVE_FORM_SUBMIT_LINK_IE             | 1.1           |false                                                     | true,false                                |  Add a code that save the form before submit using a link (call to window.external.AutoCompleteSaveForm(form) ). It's a bug on IE.                                                                                                                                                                                                     [...]
+| o.a.m.DELEGATE_FACES_SERVLET               | 1.2.7         |                                                          |                                           |                                                                                                                                                                                                                                                                                                                                        [...]
+| o.a.m.USE_ENCRYPTION | 1.1.8 | | | Indicate if the view state is encrypted or not |
+| o.a.m.SECRET | 1.1 | | |  Defines the secret (Base64 encoded) used to initialize the secret key for encryption algorithm|
+| o.a.m.ALGORITHM | 1.1 | ||  Indicate the encryption algorithm used for encrypt the view state |
+| o.a.m.SECRET.CACHE | 1.1 | || If is set to "false", the secret key used for encryption algorithm is not cached |
+| o.a.m.ALGORITHM.IV | 1.1 | | | Defines the initialization vector (Base64 encoded) used for the encryption algorithm |
+| o.a.m.ALGORITHM.PARAMETERS | 1.1 | | | Defines the default mode and padding used for the encryption algorithm |
+| o.a.m.SERIAL_FACTORY | 1.1 | | | Defines the factory class name using for serialize/deserialize the view state returned by state manager into a byte array |
+| o.a.m.COMPRESS_STATE_IN_CLIENT | 1.1 | | | Indicate if the view state should be compressed before encrypted(optional) and encoded |
+| o.a.m.MAC_ALGORITHM | 1.1 | | | Indicate the algorithm used to calculate the Message Authentication Code that is added to the view state |
+| o.a.m.MAC_SECRET | 1.1 | | | Define the initialization code that are used to initialize the secret key used on the Message Authentication Code algorithm |
+| o.a.m.MAC_SECRET.CACHE | 1.1 | | | If is set to "false", the secret key used for MAC algorithm is not cached |
+| o.a.m.EXPRESSION_FACTORY |1.2.7| | | This parameter specifies the ExpressionFactory implementation to use. |
+
+
diff --git a/core20.md b/core20.md
new file mode 100644
index 0000000..dbfbcd3
--- /dev/null
+++ b/core20.md
@@ -0,0 +1,220 @@
+# Apache MyFaces Core 2.0
+
+Implementation of the JavaServer™ Faces (JSF) 2.0 specification.
+
+## Requirements
+* Java 1.5
+* Servlet 2.5
+* EL 2.1
+* CDI 1.0 (optional)
+* JSTL 1.2 (optional)
+* BV 1.0 (optional)
+
+## Source
+[Apache GitBox](https://gitbox.apache.org/repos/asf?p=myfaces.git;a=shortlog;h=refs/heads/2.0.x) / [GitHub](https://github.com/apache/myfaces/tree/2.0.x)
+
+## Downloads
+
+|     | Mirrors                                                                                                                      | Checksum                                                                                                                     | Signature                                                                                                                                |
+|-----------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
+| binary (tar.gz) | [myfaces-core-assembly-2.0.24-bin.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-2.0.24-bin.tar.gz) | [myfaces-core-assembly-2.0.24-bin.tar.gz.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.0.24-bin.tar.gz.md5) | [myfaces-core-assembly-2.0.24-bin.tar.gz.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.0.24-bin.tar.gz.asc) |
+| binary (zip)    | [myfaces-core-assembly-2.0.24-bin.zip](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-2.0.24-bin.zip)       | [myfaces-core-assembly-2.0.24-bin.zip.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.0.24-bin.zip.md5)       | [myfaces-core-assembly-2.0.24-bin.zip.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.0.24-bin.zip.asc)       |
+| source (tar.gz) | [myfaces-core-assembly-2.0.24-src.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-2.0.24-src.tar.gz)   | [myfaces-core-assembly-2.0.24-src.tar.gz.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.0.24-src.tar.gz.md5)   | [myfaces-core-assembly-2.0.24-src.tar.gz.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.0.24-src.tar.gz.asc)   |
+| source (zip)    | [myfaces-core-assembly-2.0.24-src.zip](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-2.0.24-src.zip)         | [myfaces-core-assembly-2.0.24-src.zip.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.0.24-src.zip.md5)         | [myfaces-core-assembly-2.0.24-src.zip.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.0.24-src.zip.asc)         |
+
+## Dependency
+```xml
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-api</artifactId>
+  <version>2.0.24</version>
+</dependency>
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-impl</artifactId>
+  <version>2.0.24</version>
+</dependency>
+```
+
+## Configuration
+
+MyFaces core behavior can be customized, adding some web config params into your WEB-INF/web.xml or META-INF/web-fragment.xml file for your custom project in this way:
+
+```xml
+<context-param>
+	<param-name>org.apache.myfaces.SOME_USEFUL_PARAM</param-name>
+	<param-value>someValue</param-value>
+</context-param>
+```
+
+> :warning: **The table below uses `o.a.m` as shortcut for `org.apache.myfaces`**
+
+### Common
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.PROJECT_STAGE | 2.0 | Production | Development, Production, SystemTest, UnitTest | Indicate the stage of the initialized application |
+| javax.faces.FACELETS_BUFFER_SIZE | 2.0 | 1024 |  | Define the default buffer size value passed to ExternalContext.setResponseBufferResponse() and in a servlet environment to HttpServletResponse.setBufferSize() |
+| javax.faces.FACELETS_DECORATORS | 2.0 |  |  | Set of class names, separated by ';', implementing TagDecorator interface, used to transform a view definition in a facelet abstract syntax tree, that is used later to generate a component tree |
+| javax.faces.FACELETS_LIBRARIES | 2.0 |  |  | Set of .taglib.xml files, separated by ';' that should be loaded by facelet engine. |
+| javax.faces.FACELETS_REFRESH_PERIOD | 2.0 | -1 |  | Define the period used to refresh the facelet abstract syntax tree from the view definition file |
+| javax.faces.FACELETS_SKIP_COMMENTS | 2.0 |  |  | Skip comments found on a facelet file |
+| javax.faces.CONFIG_FILES | 1.1 |  |  | Comma separated list of URIs of (additional) faces config files |
+| javax.faces.LIFECYCLE_ID | 1.1 |  |  | Identify the Lifecycle instance to be used |
+| javax.faces.FACELETS_RESOURCE_RESOLVER | 2.0 |  |  | Class implementing ResourceResolver interface used to locate facelet resources |
+| o.a.m.CONFIG_REFRESH_PERIOD | 1.1 | 2 |  | Set the time in seconds that check for updates of web |
+| o.a.m.DELEGATE_FACES_SERVLET | 1.2.7 |  |  | Define an alternate class name that will be used to initialize MyFaces, instead the default javax |
+| o.a.m.VALIDATE_XML | 2.0 |  | true, false, on, off, yes, no | If set to <code>true</code>, tag library XML files and faces config XML files using schema will be validated during application start up |
+| o.a.m.DEBUG_PHASE_LISTENER | 2.0.8 |  |  | Enable/disable DebugPhaseListener feature, with provide useful information about ValueHolder  variables (submittedValue, localValue, value) |
+| o.a.m.STRICT_JSF_2_REFRESH_TARGET_AJAX | 2.0.10 | false | true, false | Detect if a target (usually head) should be update for the current view in an ajax render  operation |
+| o.a.m.GAE_JSF_JAR_FILES |  2.0.14 |  | none, myfavoritejsflib-*.jar | When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for files (faces-config, facelets taglib or annotations) |
+| o.a.m.GAE_JSF_ANNOTATIONS_JAR_FILES | 2.0.14 |  | none, myfavoritejsflib-*.jar | When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for annotations |
+| o.a.m.FLASH_SCOPE_DISABLED | 2.0.5 | false |  | Defines whether flash scope is disabled, preventing add the Flash cookie to the response |
+| o.a.m.LAZY_LOAD_CONFIG_OBJECTS | 2.0 | true |  | Indicate if the classes associated to components, converters, validators or behaviors should be loaded as soon as they are added to the current application instance or instead loaded in a lazy way |
+| o.a.m.VALIDATE | 2.0 | false | true, false | Validate if the managed beans and navigations rules are correct |
+| o.a.m.annotation.SCAN_PACKAGES | 2.0 |  |  | Servlet context init parameter which defines which packages to scan for beans, separated by commas |
+| o.a.m.config.annotation.LifecycleProvider | 1.1 |  |  | no description |
+| o.a.m.ERROR_TEMPLATE_RESOURCE | 1.2.4 | META-INF/rsc/myfaces-dev-error.xml |  | Indicate the template name used to render the default error page used by MyFaces specific  error handler implementation |
+| o.a.m.DEBUG_TEMPLATE_RESOURCE | 1.2.4 | META-INF/rsc/myfaces-dev-debug.xml |  | Indicate the template name used to render the default debug page (see ui:debug tag) |
+| o.a.m.ERROR_HANDLING | 1.2.4 | false, on Development Project stage: true | true,false | Indicate if myfaces is responsible to handle errors |
+| o.a.m.SERVICE_PROVIDER_FINDER | 2.0.3 |  |  | Class name of a custom ServiceProviderFinder implementation. |
+| o.a.m.WRAP_TAG_EXCEPTIONS_AS_CONTEXT_AWARE | 2.0.9 | true | true, false | Wrap exception caused by calls to EL expressions, so information like the location, expression string and tag name can be retrieved by the ExceptionHandler implementation and used to output meaningful information about itself |
+| o.a.m.VIEW_POOL_MAX_POOL_SIZE |  | 5 |  | Defines the number of views to be hold per each view metadata definition |
+| o.a.m.VIEW_POOL_MAX_DYNAMIC_PARTIAL_LIMIT |  | 2 |  | Defines the limit of the views that cannot be reused partially |
+| o.a.m.VIEW_POOL_ENTRY_MODE |  | soft | weak,soft | Defines the type of memory reference that is used to hold the view into memory |
+| o.a.m.VIEW_POOL_DEFERRED_NAVIGATION |  | false | true, false | Defines if the view pool uses deferred navigation to recycle views when navigation is performed |
+| o.a.m.INITIALIZE_ALWAYS_STANDALONE | 2.0.3 | false |  | If this param is set to true, the check for faces servlet mapping is not done |
+| o.a.m.LOG_WEB_CONTEXT_PARAMS |  | auto | true, auto, false | Indicate if log all web config params should be done before initialize the webapp |
+| o.a.m.FACES_INITIALIZER | 2.0.1 |  |  | Class name of a custom FacesInitializer implementation. |
+| o.a.m.FACES_INIT_PLUGINS | 2.0 |  |  | comma delimited list of plugin classes which can be hooked into myfaces |
+
+### Validation
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.VALIDATE_EMPTY_FIELDS | 2.0 | auto | auto, true, false | Force validation on empty fields (By default is auto, which means it is only enabled when Bean Validation binaries are available on the current classpath) |
+| javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL | 2.0 | false | true, false | Submitted values are decoded as null values instead empty strings |
+| javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE | 2.0 | false | true, false | Set the default timezone as system timezone when a converter extending from DateTimeConverter is created |
+| o.a.m.ENUM_CONVERTER_ALLOW_STRING_PASSTROUGH | 2.0.1 | false | true,false | If value is a String instance and this param is true, pass it directly without try any change |
+| javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR | 2.0 | true | true, false | If this init parameter is present, no Bean Validators should be added to an UIInput by default |
+
+### EL
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.CACHE_EL_EXPRESSIONS | 2.0.8 | noCache | noCache, strict, allowCset, always, alwaysRecompile | Indicates if expressions generated by facelets should be cached or not |
+| o.a.m.EXPRESSION_FACTORY | 1.2.7 |  |  | This parameter specifies the ExpressionFactory implementation to use |
+| o.a.m.EL_RESOLVER_COMPARATOR | 2.0.2 |  |  | The Class of an Comparator&lt;ELResolver&gt; implementation. |
+| o.a.m.STRICT_JSF_2_CC_EL_RESOLVER | 2.0.10 | false | true, false | Change default getType() behavior for composite component EL resolver, from return null (see JSF 2_0 spec section 5_6_2_2) to use the metadata information added by composite:attribute, ensuring components working with chained EL expressions to find the right type when a getType() is called over the source EL expression |
+| o.a.m.SUPPORT_JSP_AND_FACES_EL | 2.0.13 | true | true,false | If set false, myfaces won't support JSP and javax.faces.el. JSP are deprecated in JSF 2.X, javax.faces.el in in JSF 1.2. Default value is true. |
+
+### Render
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG | 2.0.1 | false | true, false, on, off, yes, no | Wrap content inside script with xml comment to prevent old browsers to display it |
+| o.a.m.RENDER_FORM_SUBMIT_SCRIPT_INLINE | 2.0.2 | false | true, false, on, off, yes, no | If set true, render the form submit script inline, as in myfaces core 1 |
+| o.a.m.DEFAULT_RESPONSE_WRITER_CONTENT_TYPE_MODE | 2.0.11 | text/html | text/html, application/xhtml+xml | Define the default content type that the default ResponseWriter generates, when no match can be derived from HTTP Accept Header |
+| o.a.m.PRETTY_HTML | 1.1 | true | true, false, on, off, yes, no | If true, rendered HTML code will be formatted, so that it is "human readable" |
+| o.a.m.ALLOW_JAVASCRIPT | 1.1 | true | true, false, on, off, yes, no | This parameter tells MyFaces if javascript code should be allowed in the rendered HTML output |
+| o.a.m.STRICT_XHTML_LINKS | 1.1.6 | true | true, false, on, off, yes, no | Use "&amp;amp;" entity instead a plain "&amp;" character within HTML |
+| o.a.m.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON | 1.2.3 | false | true, false, on, off, yes, no | This param renders the clear javascript on button necessary only for compatibility with hidden fields feature of myfaces |
+| o.a.m.RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS | 1.2.9 | false | true, false, on, off, yes, no | This param renders hidden fields at the end of h:form for link params when h:commandLink + f:param is used, instead use javascript to create them |
+| o.a.m.SAVE_FORM_SUBMIT_LINK_IE | 1.1 | false | true, false, on, off, yes, no | Add a code that save the form before submit using a link |
+| o.a.m.USE_MULTIPLE_JS_FILES_FOR_JSF_UNCOMPRESSED_JS | 2.0.1 | false | true,false | If this param is true and the project stage is development mode, the source javascript files will be loaded separately instead have all in just one file, to preserve line numbers and make javascript debugging of the default jsf javascript file more simple |
+| o.a.m.JSF_JS_MODE | 2.0.10 | normal | normal, minimal-modern, minimal | Define the mode used for jsf |
+
+### ViewHandler
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.DEFAULT_SUFFIX | 1.1 | .xhtml .view.xml .jsp |  | Indicate the default suffixes, separated by spaces to derive the default file URI  used by JSF to create views and render pages |
+| javax.faces.FACELETS_SUFFIX | 2.0 | .xhtml |  | The default extension used to handle facelets pages |
+| javax.faces.FACELETS_VIEW_MAPPINGS | 2.0 |  |  | Set of extensions handled by facelets, separated by ';' |
+| javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER | 2.0 | false | true,false | Disable facelets VDL from the current application project |
+| o.a.m.VIEW_UNIQUE_IDS_CACHE_ENABLED | 2.0.13 | true | true, false | Enable or disable a cache used to 'remember'  the generated facelets unique ids and reduce the impact over memory usage. |
+| o.a.m.COMPONENT_UNIQUE_IDS_CACHE_SIZE | 2.0.13 | 100 |  | Set the size of the cache used to store strings generated using SectionUniqueIdCounter for component ids |
+| o.a.m.CHECKED_VIEWID_CACHE_SIZE | 2.0.2 | 500 |  | Controls the size of the cache used to 'remember' if a view exists or not. |
+| o.a.m.CHECKED_VIEWID_CACHE_ENABLED | 2.0.2 | true | true, false | Enable or disable a cache used to 'remember' if a view exists or not and reduce the impact of sucesive calls to ExternalContext.getResource(). |
+
+###  Resources
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.RESOURCE_EXCLUDES | 2.0 | .class .jsp .jspx .properties .xhtml .groovy |  | Space separated file extensions that will not be served by the default ResourceHandler implementation |
+| o.a.m.RESOURCE_MAX_TIME_EXPIRES | 2.0 | 604800000 |  | Set the max time in miliseconds set on the "Expires" header for a resource rendered by the default ResourceHandler |
+| o.a.m.RESOURCE_HANDLER_CACHE_SIZE | 2.0.2 | 500 |  | Controls the size of the cache used to check if a resource exists or not |
+| o.a.m.RESOURCE_HANDLER_CACHE_ENABLED | 2.0.2 | true | true,false | Enable or disable the cache used to "remember" if a resource handled by the default ResourceHandler exists or not |
+| o.a.m.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME | 2.0.12 | false | true, false | Allow slash in the library name of a Resource |
+| o.a.m.RESOURCE_BUFFER_SIZE | 2.0.16 | 2048 |  | Define the default buffer size that is used between Resource |
+
+
+### State
+
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.STATE_SAVING_METHOD | 1.1 | server | server,client | Define the state method to be used. There are two different options defined by the specification: 'client' and 'server' state. |
+| javax.faces.FULL_STATE_SAVING_VIEW_IDS | 2.0 |  |  | Indicate the viewId(s) separated by commas that should be saved and restored fully, without use Partial State Saving (PSS) |
+| javax.faces.PARTIAL_STATE_SAVING | 2.0 | true (false with 1.2 webapps) | true,false | Enable or disable partial state saving algorithm |
+| o.a.m.USE_ENCRYPTION | 1.1 | true | true,false | Indicate if the view state is encrypted or not |
+| o.a.m.SECRET | 1.1 |  |  | Defines the secret (Base64 encoded) used to initialize the secret key for encryption algorithm |
+| o.a.m.ALGORITHM | 1.1 | DES |  | Indicate the encryption algorithm used for encrypt the view state |
+| o.a.m.SECRET.CACHE | 1.1 |  |  | If is set to "false", the secret key used for encryption algorithm is not cached |
+| o.a.m.ALGORITHM.IV | 1.1 |  |  | Defines the initialization vector (Base64 encoded) used for the encryption algorithm |
+| o.a.m.ALGORITHM.PARAMETERS | 1.1 | ECB/PKCS5Padding |  | Defines the default mode and padding used for the encryption algorithm |
+| o.a.m.SERIAL_FACTORY | 1.1 |  |  | Defines the factory class name using for serialize/deserialize the view state returned by state manager into a byte array |
+| o.a.m.COMPRESS_STATE_IN_CLIENT | 1.1 | false | true,false | Indicate if the view state should be compressed before encrypted(optional) and encoded |
+| o.a.m.MAC_ALGORITHM |  | HmacSHA1 |  | Indicate the algorithm used to calculate the Message Authentication Code that is added to the view state |
+| o.a.m.MAC_SECRET |  |  |  | Define the initialization code that are used to initialize the secret key used on the Message Authentication Code algorithm |
+| o.a.m.MAC_SECRET.CACHE |  |  |  | If is set to "false", the secret key used for MAC algorithm is not cached |
+| o.a.m.CLIENT_VIEW_STATE_TIMEOUT | 2.0.15 | 0 |  | Define the time in minutes where the view state is valid when client side state saving is used |
+| o.a.m.SERIALIZE_STATE_IN_SESSION | 1.1 | false | true,false | Indicate if the state should be serialized before save it on the session |
+| o.a.m.COMPRESS_STATE_IN_SESSION | 1.1 | true | true,false | Indicates that the serialized state will be compressed before it is written to the session |
+| o.a.m.CACHE_OLD_VIEWS_IN_SESSION_MODE | 1.2.5 | off | off, no, hard-soft, soft, soft-weak, weak | Define the way of handle old view references(views removed from session), making possible to store it in a cache, so the state  |  |
+| o.a.m.USE_FLASH_SCOPE_PURGE_VIEWS_IN_SESSION | 2.0.6 | false | true, false | Allow use flash scope to keep track of the views used in session and the previous ones, so server side state saving can delete old views even if POST-REDIRECT-GET pattern is used |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN | 2.0.15 | none | secureRandom, random, none | Adds a random key to the generated view state session token |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_LENGTH | 2.0.15 | 8 |  | Set the default length of the random key added to the view state session token |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_CLASS | 2.0.15 |  |  | Sets the random class to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_PROVIDER | 2.0.15 |  |  | Sets the random provider to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_ALGORITM | 2.0.15 | SHA1PRNG |  | Sets the random algorithm to initialize the secure random id generator |
+| o.a.m.SAVE_STATE_WITH_VISIT_TREE_ON_PSS | 2.0.8 | true | true, false | If this param is set to true (by default), when pss algorithm is executed to save state, a visit tree traversal is done, instead a plain traversal like previous versions |
+| o.a.m.CHECK_ID_PRODUCTION_MODE | 2.0.12 | auto | true, auto, false | Define how duplicate ids are checked when ProjectStage is Production, by default (auto) it only check ids of components that does not encapsulate markup (like facelets UILeaf) |
+| o.a.m.REFRESH_TRANSIENT_BUILD_ON_PSS | 2.0 | auto | true,false,auto | Indicate if the facelet associated to the view should be reapplied when the view is refreshed |
+| o.a.m.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE | 2.0 | false | true, false, on, off, yes, no | Enable or disable a special mode that enable full state for parent components containing c:if, c:forEach,  c:choose and ui:include with src=ELExpression |
+| o.a.m.RENDER_VIEWSTATE_ID | 1.1 | true | true, false, on, off, yes, no | efine if the input field that should store the state (javax.faces.ViewState) should render id="javax.faces.ViewState". |
+| o.a.m.NUMBER_OF_VIEWS_IN_SESSION | 1.1 | 20 |  | Defines the amount (default = 20) of the latest views are stored in session |
+| o.a.m.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION | 2.0.6 | 4 |  | Indicates the amount of views (default is not active) that should be stored in session between sequential POST or POST-REDIRECT-GET if org |
+| o.a.m.AUTOCOMPLETE_OFF_VIEW_STATE | 2.0.24 | true | true, false | Add autocomplete="off" to the view state hidden field |
+
+### Deprecated
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| facelets.BUFFER_SIZE | 2.0 |  |  | Define the default buffer size value passed to ExternalContext |
+| facelets.REFRESH_PERIOD | 2.0 | -1 |  | Define the period used to refresh the facelet abstract syntax tree from the view definition file |
+| facelets.RESOURCE_RESOLVER | 2.0 |  |  | Class implementing ResourceResolver interface used to locate facelet resources |
+| facelets.DECORATORS | 2.0 |  |  | Set of class names, separated by ';', implementing TagDecorator interface, used to transform a view definition in a facelet abstract syntax tree, that is used later to generate a component tree |
+| facelets.SKIP_COMMENTS | 2.0 |  |  | Skip comments found on a facelet file |
+| facelets.LIBRARIES | 2.0 |  |  | Set of .taglib.xml files, separated by ';' that should be loaded by facelet engine. |
+| o.a.m.ERROR_HANDLER | 1.2.4 |  |  | Deprecated: use JSF 2.0 ExceptionHandler |
+| o.a.m.VIEWSTATE_JAVASCRIPT | 1.1 | false | true, false, on, off, yes, no | Set the view state using a javascript function instead a hidden input field |
+
+
+## Integration / SPI
+
+> :warning: **usually common users of MyFaces Core does not need to deal with these specific stuff, because the application/web server could already provide the necessary hooks or integration modules "out of the box"**
+
+MyFaces core provides some "points of integration" that can be used by application and web servers to override or add some specific code.
+For example, JBoss AS provides a custom virtual file system (VFS), and MyFaces core needs to scan for faces-config.xml files, so it is necessary to provide some code that uses JBoss VFS to locate faces-config.xml files to be parsed later.
+
+Some features uses Service Provider Interface (SPI) pattern, so take a look at java.util.ServiceLoader description in java 6 api to get the idea how it works.
+
+Below there is a table of the "points of integration" used by application and web servers:
+
+| Integration Point                                                          | Classes Involved                                                   | Description                                                                                                                                                                                                                                                                                                                                              [...]
+|----------------------------------------------------------------------------|--------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| @PostConstruct and @PreDestroy injection over jsf managed beans            | org.apache.myfaces.config.annotation.LifecycleProvider2   org.apache.myfaces.config.annotation.LifecycleProviderFactory            | Provide methods to delegate injection of @PostConstruct and @PreDestroy annotations to the server for custom processing.                                                                                                                                                                 [...]
+| Override SPI handling                                                      | org.apache.myfaces.spi.ServiceProviderFinder  <br/> org.apache.myfaces.spi.ServiceProviderFinderFactory  | Override SPI handling done by MyFaces Core, usually taking advantage of container specific features to scan files inside jars.                                                                                                                                                                                     [...]
+| Annotation Scanning                                                        | org.apache.myfaces.spi.AnnotationProvider <br/> org.apache.myfaces.spi.AnnotationProviderWrapper <br/> org.apache.myfaces.spi.AnnotationProviderFactory | Override/wrap myfaces annotation scanning algorithm that needs to be processed at startup.                                                                                                                                                                          [...]
+| Locate facelet .taglib.xml files through classpath.                        | org.apache.myfaces.spi.FaceletConfigResourceProvider <br/> org.apache.myfaces.spi.FaceletConfigResourceProviderFactory             | Locate facelet .taglib.xml files through classpath. These files has definitions that are used by facelets algorithm to parse view files.                                                                                                                                                 [...]
+| Locate faces-config.xml files through classpath.                           | org.apache.myfaces.spi.FacesConfigResourceProvider <br/>  org.apache.myfaces.spi.FacesConfigResourceProviderFactory               | Locate faces-config xml files through classpath. These files has definitions that are used by initialize jsf environment. By default it locate all files inside META-INF folder, named faces-config.xml or ending with .faces-config.xml                                                  [...]
+| Get an unified configuration after sort and order all config files.        | org.apache.myfaces.spi.FacesConfigurationMerger <br/> org.apache.myfaces.spi.FacesConfigurationMergerFactory <br/> org.apache.myfaces.config.element.*   | Get all org.apache.myfaces.config.element.FacesConfig data  and then it combines it into one org.apache.myfaces.config.element.FacesConfigData instance.                                                                                                           [...]
+| Get configuration information from different sources and allow cache them. | org.apache.myfaces.spi.FacesConfigurationProvider <br/> org.apache.myfaces.spi.FacesConfigurationProviderFactory <br/> org.apache.myfaces.config.element.*                 | This interface provide a way to merge and store all JSF config information retrieved from faces-config.xml files, META-INF/service files and annotations that works as base point to initialize MyFaces. The objective is allow server container [...]
+| Override javax.faces.FactoryFinder default algorithm                       | org.apache.myfaces.spi.FactoryFinderProvider <br/> org.apache.myfaces.spi.FactoryFinderProviderFactory                  | Provide an interface to override javax.faces.FactoryFinder class methods. This is useful if containers does not want to use Thread Context Class Loader to load classes, like in OSGi.                                                                                                              [...]
+| Provide additional info from web.xml files                                 | org.apache.myfaces.spi.WebConfigProvider <br/>  org.apache.myfaces.spi.WebConfigProviderFactory   org.apache.myfaces.spi.ServletMapping                     | Provide additional info from web.xml files, like mapping or if an error page is present.                                                                                                                                                                        [...]
+| Override initialization and destroy web applications                       | org.apache.myfaces.webapp.FacesInitializer <br/> org.apache.myfaces.webapp.FacesInitializerFactory                      | Allow customize initialization / destroy operations or provide an alternate MyFaces initializer to a specific container.                                                                                                                                                                            [...]
+
+
diff --git a/core21.md b/core21.md
new file mode 100644
index 0000000..15218d8
--- /dev/null
+++ b/core21.md
@@ -0,0 +1,219 @@
+# Apache MyFaces Core 2.1
+
+Implementation of the JavaServer™ Faces (JSF) 2.1 specification.
+
+## Requirements
+* Java 1.5
+* Servlet 2.5
+* EL 2.1
+* CDI 1.0 (optional)
+* JSTL 1.2 (optional)
+* BV 1.0 (optional)
+
+## Source
+[Apache GitBox](https://gitbox.apache.org/repos/asf?p=myfaces.git;a=shortlog;h=refs/heads/2.1.x) / [GitHub](https://github.com/apache/myfaces/tree/2.1.x)
+
+## Downloads
+
+|     | Mirrors                                                                                                                      | Checksum                                                                                                                     | Signature                                                                                                                                |
+|-----------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
+| binary (tar.gz) | [myfaces-core-assembly-2.1.18-bin.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-2.1.18-bin.tar.gz) | [myfaces-core-assembly-2.1.18-bin.tar.gz.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.1.18-bin.tar.gz.md5) | [myfaces-core-assembly-2.1.18-bin.tar.gz.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.1.18-bin.tar.gz.asc) |
+| binary (zip)    | [myfaces-core-assembly-2.1.18-bin.zip](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-2.1.18-bin.zip)       | [myfaces-core-assembly-2.1.18-bin.zip.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.1.18-bin.zip.md5)       | [myfaces-core-assembly-2.1.18-bin.zip.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.1.18-bin.zip.asc)       |
+| source (tar.gz) | [myfaces-core-assembly-2.1.18-src.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-2.1.18-src.tar.gz)   | [myfaces-core-assembly-2.1.18-src.tar.gz.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.1.18-src.tar.gz.md5)   | [myfaces-core-assembly-2.1.18-src.tar.gz.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.1.18-src.tar.gz.asc)   |
+| source (zip)    | [myfaces-core-assembly-2.1.18-src.zip](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-2.1.18-src.zip)         | [myfaces-core-assembly-2.1.18-src.zip.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.1.18-src.zip.md5)         | [myfaces-core-assembly-2.1.18-src.zip.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.1.18-src.zip.asc)         |
+
+## Dependency
+```xml
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-api</artifactId>
+  <version>2.1.18</version>
+</dependency>
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-impl</artifactId>
+  <version>2.1.18</version>
+</dependency>
+```
+
+## Configuration
+
+MyFaces core behavior can be customized, adding some web config params into your WEB-INF/web.xml or META-INF/web-fragment.xml file for your custom project in this way:
+
+```xml
+<context-param>
+	<param-name>org.apache.myfaces.SOME_USEFUL_PARAM</param-name>
+	<param-value>someValue</param-value>
+</context-param>
+```
+
+> :warning: **The table below uses `o.a.m` as shortcut for `org.apache.myfaces`**
+
+### Common
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.PROJECT_STAGE| 2.0| Production| Development, Production, SystemTest, UnitTest| Indicate the stage of the initialized application |
+| javax.faces.HONOR_CURRENT_COMPONENT_ATTRIBUTES| 2.1.0| false| true, false| Indicate if the facesContext attribute values under the keys javax |
+| javax.faces.CONFIG_FILES| 1.1||| Comma separated list of URIs of (additional) faces config files |
+| javax.faces.LIFECYCLE_ID| 1.1||| Identify the Lifecycle instance to be used |
+| javax.faces.FACELETS_BUFFER_SIZE| 2.0||| Define the default buffer size value passed to ExternalContext.setResponseBufferResponse() and in a servlet environment to HttpServletResponse.setBufferSize() |
+| javax.faces.FACELETS_DECORATORS| 2.0|||Set of class names, separated by ';', implementing TagDecorator interface, used to transform a view definition in a facelet abstract syntax tree, that is used later to generate a component tree |
+| javax.faces.FACELETS_LIBRARIES| 2.0|||Set of .taglib.xml files, separated by ';' that should be loaded by facelet engine. |
+| javax.faces.FACELETS_REFRESH_PERIOD| 2.0|-1|| Define the period used to refresh the facelet abstract syntax tree from the view definition file |
+| javax.faces.FACELETS_RESOURCE_RESOLVER| 2.0||| Class implementing ResourceResolver interface used to locate facelet resources |
+| javax.faces.FACELETS_SKIP_COMMENTS| 2.0||| Skip comments found on a facelet file |
+| o.a.m.CONFIG_REFRESH_PERIOD| 1.1|2|| Set the time in seconds that check for updates of web |
+| o.a.m.GAE_JSF_JAR_FILES| 2.1.8, 2.0.14|| none, myfavoritejsflib-*.jar| When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for files (faces-config, facelets taglib or annotations) |
+| o.a.m.GAE_JSF_ANNOTATIONS_JAR_FILES| 2.1.8, 2.0.14|| none, myfavoritejsflib-*.jar| When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for annotations |
+| o.a.m.FLASH_SCOPE_DISABLED| 2.0.5 | false ||Defines whether flash scope is disabled, preventing add the Flash cookie to the response |
+| o.a.m.LAZY_LOAD_CONFIG_OBJECTS| 2.0| true| | Indicate if the classes associated to components, converters, validators or behaviors should be loaded as soon as they are added to the current application instance or instead loaded in a lazy way |
+| o.a.m.VALIDATE| 2.0| false| true, false| Validate if the managed beans and navigations rules are correct |
+| o.a.m.annotation.SCAN_PACKAGES| 2.0||| Servlet context init parameter which defines which packages to scan for beans, separated by commas |
+| o.a.m.config.annotation.LifecycleProvider| 1.1||| no description |
+| o.a.m.INITIALIZE_SKIP_JAR_FACES_CONFIG_SCAN| 2.2.10, 2.1.19| false| true, false| If the flag is true, the algoritm skip jar scanning for faces-config files to check if the current application requires FacesServlet to be added dynamically (servlet spec 3) |
+| o.a.m.ERROR_TEMPLATE_RESOURCE| 1.2.4| META-INF/rsc/myfaces-dev-error.xml|| Indicate the template name used to render the default error page used by MyFaces specific error handler implementation |
+| o.a.m.DEBUG_TEMPLATE_RESOURCE| 1.2.4| META-INF/rsc/myfaces-dev-debug.xml|| Indicate the template name used to render the default debug page (see ui:debug tag) |
+| o.a.m.ERROR_HANDLING| 1.2.4| false, on Development Project stage: true| true,false| Indicate if myfaces is responsible to handle errors |
+| o.a.m.TEMPORAL_RESOURCEHANDLER_CACHE_ENABLED| 2.1.11| false| true, false| If this param is set to true (default false), a temporal directory is created and all files handled by this ResourceLoader are cached there, avoiding the problem described on MYFACES-3586 |
+| o.a.m.SERVICE_PROVIDER_FINDER| 2.0.3||| Class name of a custom ServiceProviderFinder implementation. |
+| o.a.m.MARK_INITIAL_STATE_WHEN_APPLY_BUILD_VIEW| 2.1| false| true, false| no description |
+| o.a.m.WRAP_TAG_EXCEPTIONS_AS_CONTEXT_AWARE| 2.0.9, 2.1.3| true| true, false| Wrap exception caused by calls to EL expressions, so information like the location, expression string and tag name can be retrieved by the ExceptionHandler implementation and used to output meaningful information about itself |
+| o.a.m.INITIALIZE_ALWAYS_STANDALONE| 2.0.3 | false || If this param is set to true, the check for faces servlet mapping is not done |
+| o.a.m.LOG_WEB_CONTEXT_PARAMS| | auto| true, auto, false| Indicate if log all web config params should be done before initialize the webapp |
+| o.a.m.FACES_INITIALIZER| 2.0.1||| Class name of a custom FacesInitializer implementation. |
+| o.a.m.FACES_INIT_PLUGINS| 2.0||| comma delimited list of plugin classes which can be hooked into myfaces |
+
+### Validation
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.VALIDATE_EMPTY_FIELDS| 2.0| auto| auto, true, false| Force validation on empty fields (By default is auto, which means it is only enabled when Bean Validation binaries are available on the current classpath) |
+| javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL| 2.0| false| true, false| Submitted values are decoded as null values instead empty strings |
+| o.a.m.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL_CLEAR_INPUT| 2.1.19| false| true, false| When INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL is enabled, clear required input fields when empty strings are submitted on them <p>Note this param is only applicable when INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL is enabled |
+| o.a.m.ENUM_CONVERTER_ALLOW_STRING_PASSTROUGH| 2.0.1| false| true,false| If value is a String instance and this param is true, pass it directly without try any change |
+| javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR| 2.0| true| true, false| If this init parameter is present, no Bean Validators should be added to an UIInput by default |
+| javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE| 2.0| false| true, false| Set the default timezone as system timezone when a converter extending from DateTimeConverter is created |
+
+
+### CDI
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.CDI_MANAGED_CONVERTERS_ENABLED | 2.2.0 | false | true, false | Enable or disable CDI support for converters. |
+| o.a.m.CDI_MANAGED_VALIDATORS_ENABLED | 2.2.0 | false | true, false | Enable or disable CDI support for validators. |
+
+### EL
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.SUPPORT_JSP_AND_FACES_EL| 2.0.13,2.1.7| true| true,false|If set false, myfaces won't support JSP and javax.faces.el. JSP are deprecated in JSF 2.X, javax.faces.el in in JSF 1.2. Default value is true.|
+| o.a.m.EL_RESOLVER_COMPARATOR| 1.2.10, 2.0.2||| The Class of an Comparator&lt;ELResolver&gt; implementation.| false
+| o.a.m.EL_RESOLVER_PREDICATE| 2.1.0||| The Class of an org.apache.commons.collections.Predicate&lt;ELResolver&gt; implementation. If used and returns true for a ELResolver instance, such resolver will not be installed in ELResolvers chain. Use with caution - can break functionality defined in JSF specification 'ELResolver Instances Provided by Faces'"| false
+| o.a.m.CACHE_EL_EXPRESSIONS| 2.0.8| noCache| noCache, strict, allowCset, always, alwaysRecompile| Indicates if expressions generated by facelets should be cached or not |
+| o.a.m.EXPRESSION_FACTORY| 1.2.7||| This parameter specifies the ExpressionFactory implementation to use |
+
+### Render
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.PRETTY_HTML| 1.1| true| true, false, on, off, yes, no| If true, rendered HTML code will be formatted, so that it is "human readable" |
+| o.a.m.ALLOW_JAVASCRIPT| 1.1| true| true, false, on, off, yes, no| This parameter tells MyFaces if javascript code should be allowed in the rendered HTML output |
+| o.a.m.STRICT_XHTML_LINKS| 1.1.6| true| true, false, on, off, yes, no|Use "&amp;amp;" entity instead a plain "&amp;" character within HTML |
+| o.a.m.USE_MULTIPLE_JS_FILES_FOR_JSF_UNCOMPRESSED_JS| 2.0.1| false| true,false| If this param is true and the project stage is development mode, the source javascript files will be loaded separately instead have all in just one file, to preserve line numbers and make javascript debugging of the default jsf javascript file more simple |
+| o.a.m.JSF_JS_MODE| 2.0.10,2.1.4| normal| normal, minimal-modern, minimal| Define the mode used for jsf |
+
+### ViewHandler
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.DEFAULT_SUFFIX| 1.1| .xhtml .view.xml .jsp|| Indicate the default suffixes, separated by spaces to derive the default file URI used by JSF to create views and render pages |
+| javax.faces.FACELETS_SUFFIX| 2.0| .xhtml|| The default extension used to handle facelets pages |
+| javax.faces.FACELETS_VIEW_MAPPINGS| 2.0||| Set of extensions handled by facelets, separated by ';' |
+| o.a.m.CHECKED_VIEWID_CACHE_SIZE| 2.0.2|500|| Controls the size of the cache used to 'remember' if a view exists or not. |
+| o.a.m.CHECKED_VIEWID_CACHE_ENABLED| 2.0.2| true| true, false|Enable or disable a cache used to 'remember' if a view exists or not and reduce the impact of sucesive calls to ExternalContext.getResource(). |
+| o.a.m.COMPONENT_UNIQUE_IDS_CACHE_SIZE| 2.0.13, 2.1.7|100|| Set the size of the cache used to store strings generated using SectionUniqueIdCounter for component ids |
+| o.a.m.STRICT_JSF_2_VIEW_NOT_FOUND| 2.1.13| false| true,false| If this param is set to true, a check will be done in Restore View Phase to check if the viewId exists or not and if it does not exists, a 404 response will be thrown |
+| o.a.m.CHECKED_VIEWID_CACHE_SIZE| 2.0.2|500|| Controls the size of the cache used to 'remember' if a view exists or not. |
+| o.a.m.CHECKED_VIEWID_CACHE_ENABLED| 2.0.2| true| true, false|Enable or disable a cache used to 'remember' if a view exists or not and reduce the impact of sucesive calls to ExternalContext.getResource(). |
+| javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER| 2.0| false| true,false| Disable facelets VDL from the current application project |
+
+###  Resources
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.RESOURCE_EXCLUDES| 2.0| .class .jsp .jspx .properties .xhtml .groovy|| Space separated file extensions that will not be served by the default ResourceHandler implementation |
+| o.a.m.RESOURCE_MAX_TIME_EXPIRES| 2.0|604800000||Set the max time in miliseconds set on the "Expires" header for a resource rendered by the default ResourceHandler |
+| o.a.m.RESOURCE_HANDLER_CACHE_SIZE| 2.0.2|500|| Controls the size of the cache used to check if a resource exists or not |
+| o.a.m.RESOURCE_HANDLER_CACHE_ENABLED| 2.0.2| true| true,false| Enable or disable the cache used to "remember" if a resource handled by the default ResourceHandler exists or not |
+| o.a.m.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME| 2.1.6, 2.0.12| false| true, false| Allow slash in the library name of a Resource |
+| o.a.m.RESOURCE_BUFFER_SIZE| 2.1.10, 2.0.16|2048|| Define the default buffer size that is used between Resource |
+
+### State
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.STATE_SAVING_METHOD| 1.1| server| server,client| Define the state method to be used. There are two different options defined by the specification: 'client' and 'server' state. |
+| javax.faces.FULL_STATE_SAVING_VIEW_IDS| 2.0||| Indicate the viewId(s) separated by commas that should be saved and restored fully, without use Partial State Saving (PSS) |
+| javax.faces.PARTIAL_STATE_SAVING| 2.0| true (false with 1.2 webapps)| true,false| Enable or disable partial state saving algorithm |
+| o.a.m.RENDER_VIEWSTATE_ID | 1.1 | true | true, false, on, off, yes, no | efine if the input field that should store the state (javax.faces.ViewState) should render id="javax.faces.ViewState". |
+| o.a.m.USE_ENCRYPTION| 1.1| true| true,false| Indicate if the view state is encrypted or not |
+| o.a.m.SECRET| 1.1||| Defines the secret (Base64 encoded) used to initialize the secret key for encryption algorithm |
+| o.a.m.ALGORITHM| 1.1| DES|| Indicate the encryption algorithm used for encrypt the view state |
+| o.a.m.SECRET.CACHE| 1.1||| If is set to "false", the secret key used for encryption algorithm is not cached |
+| o.a.m.ALGORITHM.IV| 1.1||| Defines the initialization vector (Base64 encoded) used for the encryption algorithm |
+| o.a.m.ALGORITHM.PARAMETERS| 1.1| ECB/PKCS5Padding|| Defines the default mode and padding used for the encryption algorithm |
+| o.a.m.SERIAL_FACTORY| 1.1||| Defines the factory class name using for serialize/deserialize the view state returned by state manager into a byte array |
+| o.a.m.COMPRESS_STATE_IN_CLIENT| 1.1| false| true,false| Indicate if the view state should be compressed before encrypted(optional) and encoded |
+| o.a.m.MAC_ALGORITHM| | HmacSHA1|| Indicate the algorithm used to calculate the Message Authentication Code that is added to the view state |
+| o.a.m.MAC_SECRET| ||| Define the initialization code that are used to initialize the secret key used on the Message Authentication Code algorithm |
+| o.a.m.MAC_SECRET.CACHE| |||If is set to "false", the secret key used for MAC algorithm is not cached |
+| o.a.m.CLIENT_VIEW_STATE_TIMEOUT| 2.1.9, 2.0.15|0|| Define the time in minutes where the view state is valid when client side state saving is used |
+| o.a.m.NUMBER_OF_VIEWS_IN_SESSION| 1.1|20|| Defines the amount (default = 20) of the latest views are stored in session |
+| o.a.m.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION| 2.0.6||| Indicates the amount of views (default is not active) that should be stored in session between sequential POST or POST-REDIRECT-GET if org |
+| o.a.m.SERIALIZE_STATE_IN_SESSION| 1.1| true| true,false| Indicate if the state should be serialized before save it on the session |
+| o.a.m.COMPRESS_STATE_IN_SESSION| 1.1| true| true,false| Indicates that the serialized state will be compressed before it is written to the session |
+| o.a.m.CACHE_OLD_VIEWS_IN_SESSION_MODE| 1.2.5| off| off, no, hard-soft, soft, soft-weak, weak| Define the way of handle old view references(views removed from session), making possible to store it in a cache, so the state manager first try to get the view from the session |
+| o.a.m.USE_FLASH_SCOPE_PURGE_VIEWS_IN_SESSION| 2.0.6| false| true, false| Allow use flash scope to keep track of the views used in session and the previous ones, so server side state saving can delete old views even if POST-REDIRECT-GET pattern is used |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN| 2.1.9, 2.0.15| none| secureRandom, random, none| Adds a random key to the generated view state session token |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_LENGTH| 2.1.9, 2.0.15|8|| Set the default length of the random key added to the view state session token |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_CLASS| 2.1.9, 2.0.15||| Sets the random class to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_PROVIDER| 2.1.9, 2.0.15||| Sets the random provider to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_ALGORITM| 2.1.9, 2.0.15| SHA1PRNG|| Sets the random algorithm to initialize the secure random id generator |
+| o.a.m.HANDLE_STATE_CACHING_MECHANICS| 2.0.6| true| true, false| Define if the state caching code should be handled by the ResponseStateManager or by the StateManager used |
+| o.a.m.AUTOCOMPLETE_OFF_VIEW_STATE| 2.2.8, 2.1.18, 2.0.24| true| true, false| Add autocomplete="off" to the view state hidden field |
+| o.a.m.SAVE_STATE_WITH_VISIT_TREE_ON_PSS| 2.0.8, 2.1.2| true| true, false| If this param is set to true (by default), when pss algorithm is executed to save state, a visit tree traversal is done, instead a plain traversal like previous versions (2 |
+| o.a.m.CHECK_ID_PRODUCTION_MODE| 2.0.12, 2.1.6| auto| true, auto, false| Define how duplicate ids are checked when ProjectStage is Production, by default (auto) it only check ids of components that does not encapsulate markup (like facelets UILeaf) |
+
+### Deprecated
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.VIEWSTATE_JAVASCRIPT| 1.1| false| true, false, on, off, yes, no| Set the view state using a javascript function instead a hidden input field |
+| facelets.BUFFER_SIZE| 2.0||| Define the default buffer size value passed to ExternalContext |
+| facelets.DECORATORS| 2.0|||Set of class names, separated by ';', implementing TagDecorator interface, used to transform a view definition in a facelet abstract syntax tree, that is used later to generate a component tree |
+| facelets.LIBRARIES| 2.0|||Set of .taglib.xml files, separated by ';' that should be loaded by facelet engine. |
+| facelets.SKIP_COMMENTS| 2.0||| Skip comments found on a facelet file |
+| facelets.RESOURCE_RESOLVER| 2.0||| Class implementing ResourceResolver interface used to locate facelet resources |
+| facelets.REFRESH_PERIOD| 2.0|-1|| Define the period used to refresh the facelet abstract syntax tree from the view definition file |
+| o.a.m.ERROR_HANDLER | 1.2.4 |  |  | Deprecated: use JSF 2.0 ExceptionHandler |
+
+## Integration / SPI
+
+> :warning: **usually common users of MyFaces Core does not need to deal with these specific stuff, because the application/web server could already provide the necessary hooks or integration modules "out of the box"**
+
+MyFaces core provides some "points of integration" that can be used by application and web servers to override or add some specific code.
+For example, JBoss AS provides a custom virtual file system (VFS), and MyFaces core needs to scan for faces-config.xml files, so it is necessary to provide some code that uses JBoss VFS to locate faces-config.xml files to be parsed later.
+
+Some features uses Service Provider Interface (SPI) pattern, so take a look at java.util.ServiceLoader description in java 6 api to get the idea how it works.
+
+Below there is a table of the "points of integration" used by application and web servers:
+
+| Integration Point                                                          | Classes Involved                                                   | Description                                                                                                                                                                                                                                                                                                                                              [...]
+|----------------------------------------------------------------------------|--------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| @PostConstruct and @PreDestroy injection over jsf managed beans            | org.apache.myfaces.config.annotation.LifecycleProvider2   org.apache.myfaces.config.annotation.LifecycleProviderFactory            | Provide methods to delegate injection of @PostConstruct and @PreDestroy annotations to the server for custom processing.                                                                                                                                                                 [...]
+| Override SPI handling                                                      | org.apache.myfaces.spi.ServiceProviderFinder  <br/> org.apache.myfaces.spi.ServiceProviderFinderFactory  | Override SPI handling done by MyFaces Core, usually taking advantage of container specific features to scan files inside jars.                                                                                                                                                                                     [...]
+| Annotation Scanning                                                        | org.apache.myfaces.spi.AnnotationProvider <br/> org.apache.myfaces.spi.AnnotationProviderWrapper <br/> org.apache.myfaces.spi.AnnotationProviderFactory | Override/wrap myfaces annotation scanning algorithm that needs to be processed at startup.                                                                                                                                                                          [...]
+| Locate facelet .taglib.xml files through classpath.                        | org.apache.myfaces.spi.FaceletConfigResourceProvider <br/> org.apache.myfaces.spi.FaceletConfigResourceProviderFactory             | Locate facelet .taglib.xml files through classpath. These files has definitions that are used by facelets algorithm to parse view files.                                                                                                                                                 [...]
+| Locate faces-config.xml files through classpath.                           | org.apache.myfaces.spi.FacesConfigResourceProvider <br/>  org.apache.myfaces.spi.FacesConfigResourceProviderFactory               | Locate faces-config xml files through classpath. These files has definitions that are used by initialize jsf environment. By default it locate all files inside META-INF folder, named faces-config.xml or ending with .faces-config.xml                                                  [...]
+| Get an unified configuration after sort and order all config files.        | org.apache.myfaces.spi.FacesConfigurationMerger <br/> org.apache.myfaces.spi.FacesConfigurationMergerFactory <br/> org.apache.myfaces.config.element.*   | Get all org.apache.myfaces.config.element.FacesConfig data  and then it combines it into one org.apache.myfaces.config.element.FacesConfigData instance.                                                                                                           [...]
+| Get configuration information from different sources and allow cache them. | org.apache.myfaces.spi.FacesConfigurationProvider <br/> org.apache.myfaces.spi.FacesConfigurationProviderFactory <br/> org.apache.myfaces.config.element.*                 | This interface provide a way to merge and store all JSF config information retrieved from faces-config.xml files, META-INF/service files and annotations that works as base point to initialize MyFaces. The objective is allow server container [...]
+| Override javax.faces.FactoryFinder default algorithm                       | org.apache.myfaces.spi.FactoryFinderProvider <br/> org.apache.myfaces.spi.FactoryFinderProviderFactory                  | Provide an interface to override javax.faces.FactoryFinder class methods. This is useful if containers does not want to use Thread Context Class Loader to load classes, like in OSGi.                                                                                                              [...]
+| Provide additional info from web.xml files                                 | org.apache.myfaces.spi.WebConfigProvider <br/>  org.apache.myfaces.spi.WebConfigProviderFactory   org.apache.myfaces.spi.ServletMapping                     | Provide additional info from web.xml files, like mapping or if an error page is present.                                                                                                                                                                        [...]
+| Override initialization and destroy web applications                       | org.apache.myfaces.webapp.FacesInitializer <br/> org.apache.myfaces.webapp.FacesInitializerFactory                      | Allow customize initialization / destroy operations or provide an alternate MyFaces initializer to a specific container.                                                                                                                                                                            [...]
+
+
+
+
+
diff --git a/core22.md b/core22.md
new file mode 100644
index 0000000..b02ffa1
--- /dev/null
+++ b/core22.md
@@ -0,0 +1,257 @@
+# Apache MyFaces Core 2.2
+
+Implementation of the JavaServer™ Faces (JSF) 2.2 specification.
+
+## Requirements
+* Java 1.6
+* Servlet 2.5
+* EL 2.1
+* CDI 1.0 (optional)
+* JSTL 1.2 (optional)
+* BV 1.0 (optional)
+
+## Source
+[Apache GitBox](https://gitbox.apache.org/repos/asf?p=myfaces.git;a=shortlog;h=refs/heads/2.2.x) / [GitHub](https://github.com/apache/myfaces/tree/2.2.x)
+
+## Downloads
+
+|     | Mirrors                                                                                                                      | Checksum                                                                                                                     | Signature                                                                                                                                |
+|-----------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
+| binary (tar.gz) | [myfaces-core-assembly-2.2.13-bin.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-2.2.13-bin.tar.gz) | [myfaces-core-assembly-2.2.13-bin.tar.gz.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.2.13-bin.tar.gz.md5) | [myfaces-core-assembly-2.2.13-bin.tar.gz.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.2.13-bin.tar.gz.asc) |
+| binary (zip)    | [myfaces-core-assembly-2.2.13-bin.zip](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-2.2.13-bin.zip)       | [myfaces-core-assembly-2.2.13-bin.zip.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.2.13-bin.zip.md5)       | [myfaces-core-assembly-2.2.13-bin.zip.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.2.13-bin.zip.asc)       |
+| source (tar.gz) | [myfaces-core-assembly-2.2.13-src.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-2.2.13-src.tar.gz)   | [myfaces-core-assembly-2.2.13-src.tar.gz.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.2.13-src.tar.gz.md5)   | [myfaces-core-assembly-2.2.13-src.tar.gz.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.2.13-src.tar.gz.asc)   |
+| source (zip)    | [myfaces-core-assembly-2.2.13-src.zip](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-2.2.13-src.zip)         | [myfaces-core-assembly-2.2.13-src.zip.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.2.13-src.zip.md5)         | [myfaces-core-assembly-2.2.13-src.zip.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.2.13-src.zip.asc)         |
+
+## Dependency
+```xml
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-api</artifactId>
+  <version>2.2.13</version>
+</dependency>
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-impl</artifactId>
+  <version>2.2.13</version>
+</dependency>
+```
+
+## Configuration
+
+MyFaces core behavior can be customized, adding some web config params into your WEB-INF/web.xml or META-INF/web-fragment.xml file for your custom project in this way:
+
+```xml
+<context-param>
+	<param-name>org.apache.myfaces.SOME_USEFUL_PARAM</param-name>
+	<param-value>someValue</param-value>
+</context-param>
+```
+
+> :warning: **The table below uses `o.a.m` as shortcut for `org.apache.myfaces`**
+
+### Common
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| DISABLE_FACELET_JSF_VIEWHANDLER | 2.2 |  |  | no description |
+| javax.faces.PROJECT_STAGE | 2.0 | Production | Development, Production, SystemTest, UnitTest | Indicate the stage of the initialized application |
+| javax.faces.FACELETS_BUFFER_SIZE | 2.0 | 1024 |  | Define the default buffer size value passed to ExternalContext.setResponseBufferResponse() and in a servlet environment to HttpServletResponse.setBufferSize() |
+| javax.faces.FACELETS_DECORATORS | 2.0 |  |  | Set of class names, separated by ';', implementing TagDecorator interface, used to transform a view definition in a facelet abstract syntax tree, that is used later to generate a component tree |
+| javax.faces.FACELETS_LIBRARIES | 2.0 |  |  | Set of .taglib.xml files, separated by ';' that should be loaded by facelet engine. |  |
+| javax.faces.FACELETS_REFRESH_PERIOD | 2.0 | -1 |  | Define the period used to refresh the facelet abstract syntax tree from the view definition file |
+| javax.faces.FACELETS_SKIP_COMMENTS | 2.0 |  |  | Skip comments found on a facelet file |
+| javax.faces.HONOR_CURRENT_COMPONENT_ATTRIBUTES | 2.1.0 | false | true, false | Indicate if the facesContext attribute values under the keys javax |
+| javax.faces.FACELETS_RESOURCE_RESOLVER | 2.0 |  |  | Class implementing ResourceResolver interface used to locate facelet resources |
+| javax.faces.CONFIG_FILES | 1.1 |  |  | Comma separated list of URIs of (additional) faces config files |
+| javax.faces.LIFECYCLE_ID | 1.1 |  |  | Identify the Lifecycle instance to be used |
+| o.a.m.CONFIG_REFRESH_PERIOD | 1.1 | 2 |  | Set the time in seconds that check for updates of web |
+| o.a.m.DELEGATE_FACES_SERVLET | 1.2.7 |  |  | Define an alternate class name that will be used to initialize MyFaces, instead the default javax |
+| o.a.m.VALIDATE_XML | 2.0 |  | true, false, on, off, yes, no | If set to <code>true</code>, tag library XML files and faces config XML files using schema will be validated during application start up |
+| o.a.m.DEBUG_PHASE_LISTENER | 2.0.8 |  |  | Enable/disable DebugPhaseListener feature, with provide useful information about ValueHolder  variables (submittedValue, localValue, value) |
+| o.a.m.STRICT_JSF_2_REFRESH_TARGET_AJAX | 2.0.10 | false | true, false | Detect if a target (usually head) should be update for the current view in an ajax render  operation |
+| o.a.m.GAE_JSF_JAR_FILES | 2.1.8, 2.0.14 |  | none, myfavoritejsflib-*.jar | When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for files (faces-config, facelets taglib or annotations) |
+| o.a.m.GAE_JSF_ANNOTATIONS_JAR_FILES | 2.1.8, 2.0.14 |  | none, myfavoritejsflib-*.jar | When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for annotations |
+| o.a.m.FLASH_SCOPE_DISABLED | 2.0.5 | false |  | Defines whether flash scope is disabled, preventing add the Flash cookie to the response |
+| o.a.m.STRICT_JSF_2_ORIGIN_HEADER_APP_PATH | 2.2.13 | false | true,false | This parameter specifies whether or not the Origin header app path should be checked |
+| o.a.m.ALWAYS_FORCE_SESSION_CREATION | 2.2.13 | true | true,false | Defines if a session should be created (if one does not exist) before response rendering |
+| o.a.m.LAZY_LOAD_CONFIG_OBJECTS | 2.0 | true |  | Indicate if the classes associated to components, converters, validators or behaviors should be loaded as soon as they are added to the current application instance or instead loaded in a lazy way |
+| o.a.m.VALIDATE | 2.0 | false | true, false | Validate if the managed beans and navigations rules are correct |
+| o.a.m.annotation.USE_CDI_FOR_ANNOTATION_SCANNING | 2.2.9 |  |  | Defines if CDI should be used for annotation scanning to improve the startup performance |
+| o.a.m.annotation.SCAN_PACKAGES | 2.0 |  |  | Servlet context init parameter which defines which packages to scan for beans, separated by commas |
+| o.a.m.config.annotation.LifecycleProvider | 1.1 |  |  | no description |
+| o.a.m.INITIALIZE_SKIP_JAR_FACES_CONFIG_SCAN | 2.2.10 | false | true, false | If the flag is true, the algoritm skip jar scanning for faces-config files to check if the current application requires FacesServlet to be added dynamically (servlet spec 3) |
+| o.a.m.DEFAULT_WINDOW_MODE | 2.2 | url |  | no description |
+| o.a.m.ERROR_TEMPLATE_RESOURCE | 1.2.4 | META-INF/rsc/myfaces-dev-error.xml |  | Indicate the template name used to render the default error page used by MyFaces specific  error handler implementation |
+| o.a.m.DEBUG_TEMPLATE_RESOURCE | 1.2.4 | META-INF/rsc/myfaces-dev-debug.xml |  | Indicate the template name used to render the default debug page (see ui:debug tag) |
+| o.a.m.ERROR_HANDLING | 1.2.4 | false, on Development Project stage: true | true,false | Indicate if myfaces is responsible to handle errors |
+| o.a.m.TEMPORAL_RESOURCEHANDLER_CACHE_ENABLED | 2.1.11 | false | true, false | If this param is set to true (default false), a temporal directory is created and all files handled by this ResourceLoader are cached there, avoiding the problem described on MYFACES-3586 |
+| o.a.m.SERVICE_PROVIDER_FINDER | 2.0.3 |  |  | Class name of a custom ServiceProviderFinder implementation. |
+| o.a.m.spi.InjectionProvider | 2.2 |  |  | no description |
+| o.a.m.MARK_INITIAL_STATE_WHEN_APPLY_BUILD_VIEW | 2.1 | false | true, false | no description |
+| o.a.m.WRAP_TAG_EXCEPTIONS_AS_CONTEXT_AWARE | 2.0.9, 2.1.3 | true | true, false | Wrap exception caused by calls to EL expressions, so information like the location, expression string and tag name can be retrieved by the ExceptionHandler implementation and used to output meaningful information about itself |
+| o.a.m.VIEW_POOL_MAX_POOL_SIZE |  | 5 |  | Defines the number of views to be hold per each view metadata definition |
+| o.a.m.VIEW_POOL_MAX_DYNAMIC_PARTIAL_LIMIT |  | 2 |  | Defines the limit of the views that cannot be reused partially |
+| o.a.m.VIEW_POOL_ENTRY_MODE |  | soft | weak,soft | Defines the type of memory reference that is used to hold the view into memory |
+| o.a.m.VIEW_POOL_DEFERRED_NAVIGATION |  | false | true, false | Defines if the view pool uses deferred navigation to recycle views when navigation is performed |
+| o.a.m.INITIALIZE_ALWAYS_STANDALONE | 2.0.3 | false |  | If this param is set to true, the check for faces servlet mapping is not done |
+| o.a.m.LOG_WEB_CONTEXT_PARAMS |  | auto | true, auto, false | Indicate if log all web config params should be done before initialize the webapp |
+| o.a.m.FACES_INITIALIZER | 2.0.1 |  |  | Class name of a custom FacesInitializer implementation. |
+| o.a.m.FACES_INIT_PLUGINS | 2.0 |  |  | comma delimited list of plugin classes which can be hooked into myfaces |
+
+### Validation
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.VALIDATE_EMPTY_FIELDS | 2.0 | auto | auto, true, false | Force validation on empty fields (By default is auto, which means it is only enabled when Bean Validation binaries are available on the current classpath) |
+| javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL | 2.0 | false | true, false | Submitted values are decoded as null values instead empty strings |
+| o.a.m.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL_CLEAR_INPUT | 2.2.13 | false | true, false | When INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL is enabled, clear required input fields when empty strings are submitted on them. Note this param is only applicable when INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL is enabled |
+| javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE | 2.0 | false | true, false | Set the default timezone as system timezone when a converter extending from DateTimeConverter is created |
+| o.a.m.ENUM_CONVERTER_ALLOW_STRING_PASSTROUGH | 2.0.1 | false | true,false | If value is a String instance and this param is true, pass it directly without try any change |
+| javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR | 2.0 | true | true, false | If this init parameter is present, no Bean Validators should be added to an UIInput by default |
+| o.a.m.validator.BEAN_BEFORE_JSF_VALIDATION | 2.2.10 | false | true, false | Enforce f:validateBean to be called first before any JSF validator |
+
+### CDI
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.CDI_MANAGED_CONVERTERS_ENABLED | 2.2.0 | false | true, false | Enable or disable CDI support for converters. |
+| o.a.m.CDI_MANAGED_VALIDATORS_ENABLED | 2.2.0 | false | true, false | Enable or disable CDI support for validators. |
+
+### EL
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.CACHE_EL_EXPRESSIONS | 2.0.8 | noCache | noCache, strict, allowCset, always, alwaysRecompile | Indicates if expressions generated by facelets should be cached or not |
+| o.a.m.EXPRESSION_FACTORY | 1.2.7 |  |  | This parameter specifies the ExpressionFactory implementation to use |
+| o.a.m.SUPPORT_EL_3_IMPORT_HANDLER | 2.2.9 | false | true,false | This parameter specifies whether or not the ImportHandler will be supported |
+| o.a.m.EL_RESOLVER_COMPARATOR | 1.2.10, 2.0.2 |  |  | The Class of an Comparator&lt;ELResolver&gt; implementation. |
+| o.a.m.EL_RESOLVER_PREDICATE | 2.1.0 |  |  | The Class of an org.apache.commons.collections.Predicate&lt;ELResolver&gt; implementation.If used and returns true for a ELResolver instance, such resolver will not be installed in ELResolvers chain. Use with caution - can break functionality defined in JSF specification 'ELResolver Instances Provided by Faces' |
+| o.a.m.STRICT_JSF_2_CC_EL_RESOLVER | 2.0.10 | false | true, false | Change default getType() behavior for composite component EL resolver, from return null (see JSF 2_0 spec section 5_6_2_2) to use the metadata information added by composite:attribute, ensuring components working with chained EL expressions to find the right type when a getType() is called over the source EL expression |
+| o.a.m.SUPPORT_JSP_AND_FACES_EL | 2.0.13,2.1.7 | true | true,false | If set false, myfaces won't support JSP and javax.faces.el. JSP are deprecated in JSF 2.X, javax.faces.el in in JSF 1.2. Default value is true. |
+
+### Render
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG | 2.0.1 | false | true, false, on, off, yes, no | Wrap content inside script with xml comment to prevent old browsers to display it |
+| o.a.m.RENDER_FORM_SUBMIT_SCRIPT_INLINE | 2.0.2 | false | true, false, on, off, yes, no | If set true, render the form submit script inline, as in myfaces core 1 |
+| o.a.m.DEFAULT_RESPONSE_WRITER_CONTENT_TYPE_MODE | 2.0.11,2.1.5 | text/html | text/html, application/xhtml+xml | Define the default content type that the default ResponseWriter generates, when no match can be derived from HTTP Accept Header |
+| o.a.m.PRETTY_HTML | 1.1 | true | true, false, on, off, yes, no | If true, rendered HTML code will be formatted, so that it is "human readable" |
+| o.a.m.ALLOW_JAVASCRIPT | 1.1 | true | true, false, on, off, yes, no | This parameter tells MyFaces if javascript code should be allowed in the rendered HTML output |
+| o.a.m.STRICT_XHTML_LINKS | 1.1.6 | true | true, false, on, off, yes, no | Use "&amp;amp;" entity instead a plain "&amp;" character within HTML |
+| o.a.m.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON | 1.2.3 | false | true, false, on, off, yes, no | This param renders the clear javascript on button necessary only for compatibility with hidden fields feature of myfaces |
+| o.a.m.RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS | 1.2.9 | false | true, false, on, off, yes, no | This param renders hidden fields at the end of h:form for link params when h:commandLink + f:param is used, instead use javascript to create them |
+| o.a.m.SAVE_FORM_SUBMIT_LINK_IE | 1.1 | false | true, false, on, off, yes, no | Add a code that save the form before submit using a link |
+| o.a.m.EARLY_FLUSH_ENABLED | 2.2.0 | false | true, false | Enable or disable an early flush which allows to send e.g. the HTML-Head to the client while the rest gets rendered. It's a well known technique to reduce the time for loading a page. |
+| o.a.m.RENDER_FORM_VIEW_STATE_AT_BEGIN | 2.2.4 | false | true,false | This param makes h:form component to render the view state and other hidden fields at the beginning of the form |
+| o.a.m.USE_MULTIPLE_JS_FILES_FOR_JSF_UNCOMPRESSED_JS | 2.0.1 | false | true,false | If this param is true and the project stage is development mode, the source javascript files will be loaded separately instead have all in just one file, to preserve line numbers and make javascript debugging of the default jsf javascript file more simple |
+| o.a.m.JSF_JS_MODE | 2.0.10,2.1.4 | normal | normal, minimal-modern, minimal | Define the mode used for jsf |
+
+### ViewHandler
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.DEFAULT_SUFFIX | 1.1 | .xhtml .view.xml .jsp |  | Indicate the default suffixes, separated by spaces to derive the default file URI  used by JSF to create views and render pages |
+| javax.faces.FACELETS_SUFFIX | 2.0 | .xhtml |  | The default extension used to handle facelets pages |
+| javax.faces.FACELETS_VIEW_MAPPINGS | 2.0 |  |  | Set of extensions handled by facelets, separated by ';' |
+| javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER | 2.0 | false | true,false | Disable facelets VDL from the current application project |
+| o.a.m.VIEW_UNIQUE_IDS_CACHE_ENABLED | 2.0.13, 2.1.7 | true | true, false | Enable or disable a cache used to 'remember'  the generated facelets unique ids and reduce the impact over memory usage. |
+| o.a.m.COMPONENT_UNIQUE_IDS_CACHE_SIZE | 2.0.13, 2.1.7 | 100 |  | Set the size of the cache used to store strings generated using SectionUniqueIdCounter for component ids |
+| o.a.m.STRICT_JSF_2_VIEW_NOT_FOUND | 2.1.13 | false | true,false | If this param is set to true, a check will be done in Restore View Phase to check if the viewId exists or not and if it does not exists, a 404 response will be thrown |
+| o.a.m.STRICT_JSF_2_FACELETS_COMPATIBILITY | 2.2.0 | false | true,false | This param makes components like c:set, ui:param and templating components like ui:decorate, ui:composition and ui:include to behave like the ones provided originally in facelets 1_1_x |
+| o.a.m.CHECKED_VIEWID_CACHE_SIZE | 2.0.2 | 500 |  | Controls the size of the cache used to 'remember' if a view exists or not. |
+| o.a.m.CHECKED_VIEWID_CACHE_ENABLED | 2.0.2 | true | true, false | Enable or disable a cache used to 'remember' if a view exists or not and reduce the impact of sucesive calls to ExternalContext.getResource(). |
+
+###  Resources
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.RESOURCE_EXCLUDES | 2.0 | .class .jsp .jspx .properties .xhtml .groovy |  | Space separated file extensions that will not be served by the default ResourceHandler implementation |
+| o.a.m.RESOURCE_MAX_TIME_EXPIRES | 2.0 | 604800000 |  | Set the max time in miliseconds set on the "Expires" header for a resource rendered by the default ResourceHandler |
+| o.a.m.RESOURCE_HANDLER_CACHE_SIZE | 2.0.2 | 500 |  | Controls the size of the cache used to check if a resource exists or not |
+| o.a.m.RESOURCE_HANDLER_CACHE_ENABLED | 2.0.2 | true | true,false | Enable or disable the cache used to "remember" if a resource handled by the default ResourceHandler exists or not |
+| o.a.m.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME | 2.1.6, 2.0.12 | false | true, false | Allow slash in the library name of a Resource |
+| o.a.m.RESOURCE_BUFFER_SIZE | 2.1.10, 2.0.16 | 2048 |  | Define the default buffer size that is used between Resource |
+
+
+### State
+
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.STATE_SAVING_METHOD | 1.1 | server | server,client | Define the state method to be used. There are two different options defined by the specification: 'client' and 'server' state. |
+| javax.faces.FULL_STATE_SAVING_VIEW_IDS | 2.0 |  |  | Indicate the viewId(s) separated by commas that should be saved and restored fully, without use Partial State Saving (PSS) |
+| javax.faces.PARTIAL_STATE_SAVING | 2.0 | true (false with 1.2 webapps) | true,false | Enable or disable partial state saving algorithm |
+| javax.faces.SERIALIZE_SERVER_STATE | 2.2 | false | true,false | Indicate if the state should be serialized before save it on the session |
+| o.a.m.USE_ENCRYPTION | 1.1 | true | true,false | Indicate if the view state is encrypted or not |
+| o.a.m.SECRET | 1.1 |  |  | Defines the secret (Base64 encoded) used to initialize the secret key for encryption algorithm |
+| o.a.m.ALGORITHM | 1.1 | DES |  | Indicate the encryption algorithm used for encrypt the view state |
+| o.a.m.SECRET.CACHE | 1.1 |  |  | If is set to "false", the secret key used for encryption algorithm is not cached |
+| o.a.m.ALGORITHM.IV | 1.1 |  |  | Defines the initialization vector (Base64 encoded) used for the encryption algorithm |
+| o.a.m.ALGORITHM.PARAMETERS | 1.1 | ECB/PKCS5Padding |  | Defines the default mode and padding used for the encryption algorithm |
+| o.a.m.SERIAL_FACTORY | 1.1 |  |  | Defines the factory class name using for serialize/deserialize the view state returned by state manager into a byte array |
+| o.a.m.COMPRESS_STATE_IN_CLIENT | 1.1 | false | true,false | Indicate if the view state should be compressed before encrypted(optional) and encoded |
+| o.a.m.MAC_ALGORITHM |  | HmacSHA1 |  | Indicate the algorithm used to calculate the Message Authentication Code that is added to the view state |
+| o.a.m.MAC_SECRET |  |  |  | Define the initialization code that are used to initialize the secret key used on the Message Authentication Code algorithm |
+| o.a.m.MAC_SECRET.CACHE |  |  |  | If is set to "false", the secret key used for MAC algorithm is not cached |
+| o.a.m.CLIENT_VIEW_STATE_TIMEOUT | 2.1.9, 2.0.15 | 0 |  | Define the time in minutes where the view state is valid when client side state saving is used |
+| o.a.m.COMPRESS_STATE_IN_SESSION | 1.1 | true | true,false | Indicates that the serialized state will be compressed before it is written to the session |
+| o.a.m.USE_FLASH_SCOPE_PURGE_VIEWS_IN_SESSION | 2.0.6 | false | true, false | Allow use flash scope to keep track of the views used in session and the previous ones, so server side state saving can delete old views even if POST-REDIRECT-GET pattern is used |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN | 2.1.9, 2.0.15 | none | secureRandom, random, none | Adds a random key to the generated view state session token |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_LENGTH | 2.1.9, 2.0.15 | 8 |  | Set the default length of the random key added to the view state session token |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_CLASS | 2.1.9, 2.0.15 |  |  | Sets the random class to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_PROVIDER | 2.1.9, 2.0.15 |  |  | Sets the random provider to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_ALGORITM | 2.1.9, 2.0.15 | SHA1PRNG |  | Sets the random algorithm to initialize the secure random id generator |
+| o.a.m.CHECK_ID_PRODUCTION_MODE | 2.0.12, 2.1.6 | auto | true, auto, false | Define how duplicate ids are checked when ProjectStage is Production, by default (auto) it only check ids of components that does not encapsulate markup (like facelets UILeaf) |
+| o.a.m.REFRESH_TRANSIENT_BUILD_ON_PSS | 2.0 | auto | true,false,auto | Indicate if the facelet associated to the view should be reapplied when the view is refreshed |
+| o.a.m.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE | 2.0 | false | true, false, on, off, yes, no | Enable or disable a special mode that enable full state for parent components containing c:if, c:forEach,  c:choose and ui:include with src=ELExpression |
+| o.a.m.RENDER_VIEWSTATE_ID | 1.1 | true | true, false, on, off, yes, no | efine if the input field that should store the state (javax.faces.ViewState) should render id="javax.faces.ViewState". |
+| o.a.m.NUMBER_OF_VIEWS_IN_SESSION | 1.1 | 20 |  | Defines the amount (default = 20) of the latest views are stored in session |
+| o.a.m.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION | 2.0.6 | 4 |  | Indicates the amount of views (default is not active) that should be stored in session between sequential POST or POST-REDIRECT-GET if org |
+| o.a.m.NUMBER_OF_FLASH_TOKENS_IN_SESSION | 2.2.6 |  |  | Indicate the max number of flash tokens stored into session |
+| o.a.m.FACES_FLOW_CLIENT_WINDOW_IDS_IN_SESSION | 2.2.6 |  |  | Indicate the max number of client window ids stored into session by faces flow |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN | 2.2.0 | none | secureRandom, random | Defines how to generate the csrf session token |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_LENGTH | 2.2.0 | 16 |  | Set the default length of the random key used for the csrf session token |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_CLASS | 2.2.0 |  |  | Sets the random class to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_PROVIDER | 2.2.0 |  |  | Sets the random provider to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_ALGORITM | 2.2.0 | SHA1PRNG |  | Sets the random algorithm to initialize the secure random id generator |
+| o.a.m.AUTOCOMPLETE_OFF_VIEW_STATE | 2.2.8, 2.1.18, 2.2.13 | true | true, false | Add autocomplete="off" to the view state hidden field |
+
+### Deprecated
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| facelets.BUFFER_SIZE | 2.0 |  |  | Define the default buffer size value passed to ExternalContext |
+| facelets.REFRESH_PERIOD | 2.0 | -1 |  | Define the period used to refresh the facelet abstract syntax tree from the view definition file |
+| facelets.RESOURCE_RESOLVER | 2.0 |  |  | Class implementing ResourceResolver interface used to locate facelet resources |
+| facelets.DECORATORS | 2.0 |  |  | Set of class names, separated by ';', implementing TagDecorator interface, used to transform a view definition in a facelet abstract syntax tree, that is used later to generate a component tree |
+| facelets.SKIP_COMMENTS | 2.0 |  |  | Skip comments found on a facelet file |
+| facelets.LIBRARIES | 2.0 |  |  | Set of .taglib.xml files, separated by ';' that should be loaded by facelet engine. |
+| o.a.m.VIEWSTATE_JAVASCRIPT | 1.1 | false | true, false, on, off, yes, no | Set the view state using a javascript function instead a hidden input field |
+| o.a.m.SERIALIZE_STATE_IN_SESSION | 1.1 | false | true,false | Indicate if the state should be serialized before save it on the session. Use javax.faces.SERIALIZE_SERVER_STATE. |
+| o.a.m.SAVE_STATE_WITH_VISIT_TREE_ON_PSS | 2.0.8, 2.1.2 | true | true, false | If this param is set to true (by default), when pss algorithm is executed to save state, a visit tree traversal is done, instead a plain traversal like previous versions |
+| o.a.m.HANDLE_STATE_CACHING_MECHANICS | 2.0.6 | true | true, false | Define if the state caching code should be handled by the ResponseStateManager or by the StateManager used |
+| o.a.m.ERROR_HANDLER | 1.2.4 |  |  | Deprecated: use JSF 2.0 ExceptionHandler | true |
+
+## Integration / SPI
+
+> :warning: **usually common users of MyFaces Core does not need to deal with these specific stuff, because the application/web server could already provide the necessary hooks or integration modules "out of the box"**
+
+MyFaces core provides some "points of integration" that can be used by application and web servers to override or add some specific code.
+For example, JBoss AS provides a custom virtual file system (VFS), and MyFaces core needs to scan for faces-config.xml files, so it is necessary to provide some code that uses JBoss VFS to locate faces-config.xml files to be parsed later.
+
+Some features uses Service Provider Interface (SPI) pattern, so take a look at java.util.ServiceLoader description in java 6 api to get the idea how it works.
+
+Below there is a table of the "points of integration" used by application and web servers:
+
+| Integration Point                                                          | Classes Involved                                                   | Description                                                                                                                                                                                                                                                                                                                                              [...]
+|----------------------------------------------------------------------------|--------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| @PostConstruct and @PreDestroy injection over jsf managed beans            | org.apache.myfaces.config.annotation.LifecycleProvider2   org.apache.myfaces.config.annotation.LifecycleProviderFactory            | Provide methods to delegate injection of @PostConstruct and @PreDestroy annotations to the server for custom processing.                                                                                                                                                                 [...]
+| Override SPI handling                                                      | org.apache.myfaces.spi.ServiceProviderFinder  <br/> org.apache.myfaces.spi.ServiceProviderFinderFactory  | Override SPI handling done by MyFaces Core, usually taking advantage of container specific features to scan files inside jars.                                                                                                                                                                                     [...]
+| Annotation Scanning                                                        | org.apache.myfaces.spi.AnnotationProvider <br/> org.apache.myfaces.spi.AnnotationProviderWrapper <br/> org.apache.myfaces.spi.AnnotationProviderFactory | Override/wrap myfaces annotation scanning algorithm that needs to be processed at startup.                                                                                                                                                                          [...]
+| Locate facelet .taglib.xml files through classpath.                        | org.apache.myfaces.spi.FaceletConfigResourceProvider <br/> org.apache.myfaces.spi.FaceletConfigResourceProviderFactory             | Locate facelet .taglib.xml files through classpath. These files has definitions that are used by facelets algorithm to parse view files.                                                                                                                                                 [...]
+| Locate faces-config.xml files through classpath.                           | org.apache.myfaces.spi.FacesConfigResourceProvider <br/>  org.apache.myfaces.spi.FacesConfigResourceProviderFactory               | Locate faces-config xml files through classpath. These files has definitions that are used by initialize jsf environment. By default it locate all files inside META-INF folder, named faces-config.xml or ending with .faces-config.xml                                                  [...]
+| Get an unified configuration after sort and order all config files.        | org.apache.myfaces.spi.FacesConfigurationMerger <br/> org.apache.myfaces.spi.FacesConfigurationMergerFactory <br/> org.apache.myfaces.config.element.*   | Get all org.apache.myfaces.config.element.FacesConfig data  and then it combines it into one org.apache.myfaces.config.element.FacesConfigData instance.                                                                                                           [...]
+| Get configuration information from different sources and allow cache them. | org.apache.myfaces.spi.FacesConfigurationProvider <br/> org.apache.myfaces.spi.FacesConfigurationProviderFactory <br/> org.apache.myfaces.config.element.*                 | This interface provide a way to merge and store all JSF config information retrieved from faces-config.xml files, META-INF/service files and annotations that works as base point to initialize MyFaces. The objective is allow server container [...]
+| Override javax.faces.FactoryFinder default algorithm                       | org.apache.myfaces.spi.FactoryFinderProvider <br/> org.apache.myfaces.spi.FactoryFinderProviderFactory                  | Provide an interface to override javax.faces.FactoryFinder class methods. This is useful if containers does not want to use Thread Context Class Loader to load classes, like in OSGi.                                                                                                              [...]
+| Provide additional info from web.xml files                                 | org.apache.myfaces.spi.WebConfigProvider <br/>  org.apache.myfaces.spi.WebConfigProviderFactory   org.apache.myfaces.spi.ServletMapping                     | Provide additional info from web.xml files, like mapping or if an error page is present.                                                                                                                                                                        [...]
+| Override initialization and destroy web applications                       | org.apache.myfaces.webapp.FacesInitializer <br/> org.apache.myfaces.webapp.FacesInitializerFactory                      | Allow customize initialization / destroy operations or provide an alternate MyFaces initializer to a specific container.                                                                                                                                                                            [...]
+| Scan for annotated Flows and manage Flow scope                             | org.apache.myfaces.spi.FacesFlowProvider <br/> org.apache.myfaces.spi.FacesFlowProviderFactory                         | In this interface @FlowDefinition annotation is scanned for flows defined programatically and it is also managed the flow scope logic. By default MyFaces provides two implementations, one using CDI and one without CDI (that only manages flow scope)                                             [...]
+| Manage View scope                                                          | org.apache.myfaces.spi.ViewScopeProvider <br/> org.apache.myfaces.spi.ViewScopeProviderFactory                          | This interface manage the logic to plug the view scope with JSF. It has some methods to handle view scope destroy or session destroy                                                                                                                                                                [...]
+| Scan for available contracts                                               | org.apache.myfaces.spi.ResourceLibraryContractsProvider <br/> org.apache.myfaces.spi.ResourceLibraryContractsProviderFactory           | Provides an interface to scan for the available resource library contracts in the current environment. By default it scans using external context getResource(...) methods and in the classpath according to JSF spec.                                                               [...]
+
+
+
+
+
diff --git a/core23.md b/core23.md
new file mode 100644
index 0000000..a045843
--- /dev/null
+++ b/core23.md
@@ -0,0 +1,258 @@
+# Apache MyFaces Core 2.3
+
+Implementation of the JavaServer™ Faces (JSF) 2.3 specification.
+
+## Requirements
+* Java 1.8
+* Servlet 2.5
+* EL 2.1
+* CDI 1.0 (optional)
+* JSTL 1.2 (optional)
+* BV 1.0 (optional)
+
+## Source
+[Apache GitBox](https://gitbox.apache.org/repos/asf?p=myfaces.git;a=shortlog;h=refs/heads/2.3.x) / [GitHub](https://github.com/apache/myfaces/tree/2.3.x)
+
+## Downloads
+
+|     | Mirrors                                                                                                                      | Checksum                                                                                                                     | Signature                                                                                                                                |
+|-----------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
+| binary (tar.gz) | [myfaces-core-assembly-2.3.6-bin.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-2.3.6-bin.tar.gz) | [myfaces-core-assembly-2.3.6-bin.tar.gz.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.3.6-bin.tar.gz.md5) | [myfaces-core-assembly-2.3.6-bin.tar.gz.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.3.6-bin.tar.gz.asc) |
+| binary (zip)    | [myfaces-core-assembly-2.3.6-bin.zip](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-2.3.6-bin.zip)       | [myfaces-core-assembly-2.3.6-bin.zip.md5](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.3.6-bin.zip.md5)       | [myfaces-core-assembly-2.3.6-bin.zip.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.3.6-bin.zip.asc)       |
+| source (tar.gz) | [myfaces-core-assembly-2.3.6-src.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-2.3.6-src.tar.gz)   | [myfaces-core-assembly-2.3.6-src.tar.gz.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.3.6-src.tar.gz.md5)   | [myfaces-core-assembly-2.3.6-src.tar.gz.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.3.6-src.tar.gz.asc)   |
+| source (zip)    | [myfaces-core-assembly-2.3.6-src.zip](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-2.3.6-src.zip)         | [myfaces-core-assembly-2.3.6-src.zip.md5](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.3.6-src.zip.md5)         | [myfaces-core-assembly-2.3.6-src.zip.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.3.6-src.zip.asc)         |
+
+## Dependency
+```xml
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-api</artifactId>
+  <version>2.3.6</version>
+</dependency>
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-impl</artifactId>
+  <version>2.3.6</version>
+</dependency>
+```
+
+## Configuration
+
+MyFaces core behavior can be customized, adding some web config params into your WEB-INF/web.xml or META-INF/web-fragment.xml file for your custom project in this way:
+
+```xml
+<context-param>
+	<param-name>org.apache.myfaces.SOME_USEFUL_PARAM</param-name>
+	<param-value>someValue</param-value>
+</context-param>
+```
+
+> :warning: **The table below uses `o.a.m` as shortcut for `org.apache.myfaces`**
+
+### Common
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| DISABLE_FACELET_JSF_VIEWHANDLER | 2.2 |  |  | no description |
+| javax.faces.PROJECT_STAGE | 2.0 | Production | Development, Production, SystemTest, UnitTest | Indicate the stage of the initialized application |
+| javax.faces.FACELETS_BUFFER_SIZE | 2.0 | 1024 |  | Define the default buffer size value passed to ExternalContext.setResponseBufferResponse() and in a servlet environment to HttpServletResponse.setBufferSize() |
+| javax.faces.FACELETS_DECORATORS | 2.0 |  |  | Set of class names, separated by ';', implementing TagDecorator interface, used to transform a view definition in a facelet abstract syntax tree, that is used later to generate a component tree |
+| javax.faces.FACELETS_LIBRARIES | 2.0 |  |  | Set of .taglib.xml files, separated by ';' that should be loaded by facelet engine. |  |
+| javax.faces.FACELETS_REFRESH_PERIOD | 2.0 | -1 |  | Define the period used to refresh the facelet abstract syntax tree from the view definition file |
+| javax.faces.FACELETS_SKIP_COMMENTS | 2.0 |  |  | Skip comments found on a facelet file |
+| javax.faces.HONOR_CURRENT_COMPONENT_ATTRIBUTES | 2.1.0 | false | true, false | Indicate if the facesContext attribute values under the keys javax |
+| javax.faces.FACELETS_RESOURCE_RESOLVER | 2.0 |  |  | Class implementing ResourceResolver interface used to locate facelet resources |
+| javax.faces.CONFIG_FILES | 1.1 |  |  | Comma separated list of URIs of (additional) faces config files |
+| javax.faces.LIFECYCLE_ID | 1.1 |  |  | Identify the Lifecycle instance to be used |
+| javax.faces.VIEWROOT_PHASE_LISTENER_QUEUES_EXCEPTIONS | 2.3 | false | true, false | |
+| javax.faces.WEBSOCKET_ENDPOINT_PORT | 2.3 | | | Indicates the port used for websocket connections |
+| javax.faces.DISABLE_FACESSERVLET_TO_XHTML | 2.3 | | | Disable automatic FacesServlet xhtml mapping |
+| o.a.m.CONFIG_REFRESH_PERIOD | 1.1 | 2 |  | Set the time in seconds that check for updates of web |
+| o.a.m.DELEGATE_FACES_SERVLET | 1.2.7 |  |  | Define an alternate class name that will be used to initialize MyFaces, instead the default javax |
+| o.a.m.VALIDATE_XML | 2.0 |  | true, false, on, off, yes, no | If set to <code>true</code>, tag library XML files and faces config XML files using schema will be validated during application start up |
+| o.a.m.DEBUG_PHASE_LISTENER | 2.0.8 |  |  | Enable/disable DebugPhaseListener feature, with provide useful information about ValueHolder  variables (submittedValue, localValue, value) |
+| o.a.m.GAE_JSF_JAR_FILES | 2.1.8, 2.0.14 |  | none, myfavoritejsflib-*.jar | When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for files (faces-config, facelets taglib or annotations) |
+| o.a.m.GAE_JSF_ANNOTATIONS_JAR_FILES | 2.1.8, 2.0.14 |  | none, myfavoritejsflib-*.jar | When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for annotations |
+| o.a.m.FLASH_SCOPE_DISABLED | 2.0.5 | false |  | Defines whether flash scope is disabled, preventing add the Flash cookie to the response |
+| o.a.m.STRICT_JSF_2_ORIGIN_HEADER_APP_PATH | 2.3.6 | false | true,false | This parameter specifies whether or not the Origin header app path should be checked |
+| o.a.m.ALWAYS_FORCE_SESSION_CREATION | 2.3.6 | true | true,false | Defines if a session should be created (if one does not exist) before response rendering |
+| o.a.m.LAZY_LOAD_CONFIG_OBJECTS | 2.0 | true |  | Indicate if the classes associated to components, converters, validators or behaviors should be loaded as soon as they are added to the current application instance or instead loaded in a lazy way |
+| o.a.m.VALIDATE | 2.0 | false | true, false | Validate if the managed beans and navigations rules are correct |
+| o.a.m.annotation.USE_CDI_FOR_ANNOTATION_SCANNING | 2.2.9 |  |  | Defines if CDI should be used for annotation scanning to improve the startup performance |
+| o.a.m.annotation.SCAN_PACKAGES | 2.0 |  |  | Servlet context init parameter which defines which packages to scan for beans, separated by commas |
+| o.a.m.config.annotation.LifecycleProvider | 1.1 |  |  | no description |
+| o.a.m.INITIALIZE_SKIP_JAR_FACES_CONFIG_SCAN | 2.2.10 | false | true, false | If the flag is true, the algoritm skip jar scanning for faces-config files to check if the current application requires FacesServlet to be added dynamically (servlet spec 3) |
+| o.a.m.DEFAULT_WINDOW_MODE | 2.2 | url |  | no description |
+| o.a.m.ERROR_TEMPLATE_RESOURCE | 1.2.4 | META-INF/rsc/myfaces-dev-error.xml |  | Indicate the template name used to render the default error page used by MyFaces specific  error handler implementation |
+| o.a.m.DEBUG_TEMPLATE_RESOURCE | 1.2.4 | META-INF/rsc/myfaces-dev-debug.xml |  | Indicate the template name used to render the default debug page (see ui:debug tag) |
+| o.a.m.ERROR_HANDLING | 1.2.4 | false, on Development Project stage: true | true,false | Indicate if myfaces is responsible to handle errors |
+| o.a.m.TEMPORAL_RESOURCEHANDLER_CACHE_ENABLED | 2.1.11 | false | true, false | If this param is set to true (default false), a temporal directory is created and all files handled by this ResourceLoader are cached there, avoiding the problem described on MYFACES-3586 |
+| o.a.m.SERVICE_PROVIDER_FINDER | 2.0.3 |  |  | Class name of a custom ServiceProviderFinder implementation. |
+| o.a.m.spi.InjectionProvider | 2.2 |  |  | no description |
+| o.a.m.MARK_INITIAL_STATE_WHEN_APPLY_BUILD_VIEW | 2.1 | false | true, false | no description |
+| o.a.m.WRAP_TAG_EXCEPTIONS_AS_CONTEXT_AWARE | 2.0.9, 2.1.3 | true | true, false | Wrap exception caused by calls to EL expressions, so information like the location, expression string and tag name can be retrieved by the ExceptionHandler implementation and used to output meaningful information about itself |
+| o.a.m.VIEW_POOL_MAX_POOL_SIZE |  | 5 |  | Defines the number of views to be hold per each view metadata definition |
+| o.a.m.VIEW_POOL_MAX_DYNAMIC_PARTIAL_LIMIT |  | 2 |  | Defines the limit of the views that cannot be reused partially |
+| o.a.m.VIEW_POOL_ENTRY_MODE |  | soft | weak,soft | Defines the type of memory reference that is used to hold the view into memory |
+| o.a.m.VIEW_POOL_DEFERRED_NAVIGATION |  | false | true, false | Defines if the view pool uses deferred navigation to recycle views when navigation is performed |
+| o.a.m.INITIALIZE_ALWAYS_STANDALONE | 2.0.3 | false |  | If this param is set to true, the check for faces servlet mapping is not done |
+| o.a.m.LOG_WEB_CONTEXT_PARAMS |  | auto | true, auto, false | Indicate if log all web config params should be done before initialize the webapp |
+| o.a.m.FACES_INITIALIZER | 2.0.1 |  |  | Class name of a custom FacesInitializer implementation. |
+| o.a.m.FACES_INIT_PLUGINS | 2.0 |  |  | comma delimited list of plugin classes which can be hooked into myfaces |
+| o.a.m.AUTOMATIC_EXTENSIONLESS_MAPPIN | 2.3 | false | true, false | This parameter enables automatic extensionless mapping for all JSF views |
+| o.a.m.STRICT_JSF_2_ORIGIN_HEADER_APP_PATH | 2.3 | false | true,false | This parameter specifies whether or not the Origin header app path should be checked |
+| o.a.m.ALWAYS_FORCE_SESSION_CREATION | 2.3.6 | true | true,false | Defines if a session should be created (if one does not exist) before response rendering |
+
+
+
+### Validation
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.VALIDATE_EMPTY_FIELDS | 2.0 | auto | auto, true, false | Force validation on empty fields (By default is auto, which means it is only enabled when Bean Validation binaries are available on the current classpath) |
+| javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL | 2.0 | false | true, false | Submitted values are decoded as null values instead empty strings |
+| o.a.m.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL_CLEAR_INPUT | 2.3.6 | false | true, false | When INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL is enabled, clear required input fields when empty strings are submitted on them. Note this param is only applicable when INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL is enabled |
+| javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE | 2.0 | false | true, false | Set the default timezone as system timezone when a converter extending from DateTimeConverter is created |
+| o.a.m.ENUM_CONVERTER_ALLOW_STRING_PASSTROUGH | 2.0.1 | false | true,false | If value is a String instance and this param is true, pass it directly without try any change |
+| javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR | 2.0 | true | true, false | If this init parameter is present, no Bean Validators should be added to an UIInput by default |
+| o.a.m.validator.BEAN_BEFORE_JSF_VALIDATION | 2.2.10 | false | true, false | Enforce f:validateBean to be called first before any JSF validator |
+| o.a.m.CLEAR_INPUT_WHEN_SUBMITTED_VALUE_IS_NULL_OR_EMPTY | 2.3.0 | true | true, false | When CLEAR_INPUT_WHEN_SUBMITTED_VALUE_IS_NULL_OR_EMPTY is enabled, input fields will be cleared when null or empty values are submitted |
+| javax.faces.ALWAYS_PERFORM_VALIDATION_WHEN_REQUIRED_IS_TRUE | 2.3 | false | true, false | If set to true, validation is always performed when required is true |
+| javax.faces.validator.ENABLE_VALIDATE_WHOLE_BEAN | 2.3 | false | true, false | Enable f:validateWholeBean use |
+
+
+### EL
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.CACHE_EL_EXPRESSIONS | 2.0.8 | noCache | noCache, strict, allowCset, always, alwaysRecompile | Indicates if expressions generated by facelets should be cached or not |
+| o.a.m.EXPRESSION_FACTORY | 1.2.7 |  |  | This parameter specifies the ExpressionFactory implementation to use |
+| o.a.m.SUPPORT_EL_3_IMPORT_HANDLER | 2.2.9 | false | true,false | This parameter specifies whether or not the ImportHandler will be supported |
+| o.a.m.EL_RESOLVER_COMPARATOR | 1.2.10, 2.0.2 |  |  | The Class of an Comparator&lt;ELResolver&gt; implementation. |
+| o.a.m.EL_RESOLVER_PREDICATE | 2.1.0 |  |  | The Class of an org.apache.commons.collections.Predicate&lt;ELResolver&gt; implementation.If used and returns true for a ELResolver instance, such resolver will not be installed in ELResolvers chain. Use with caution - can break functionality defined in JSF specification 'ELResolver Instances Provided by Faces' |
+| o.a.m.STRICT_JSF_2_CC_EL_RESOLVER | 2.0.10 | false | true, false | Change default getType() behavior for composite component EL resolver, from return null (see JSF 2_0 spec section 5_6_2_2) to use the metadata information added by composite:attribute, ensuring components working with chained EL expressions to find the right type when a getType() is called over the source EL expression |
+| o.a.m.SUPPORT_JSP_AND_FACES_EL | 2.0.13,2.1.7 | true | true,false | If set false, myfaces won't support JSP and javax.faces.el. JSP are deprecated in JSF 2.X, javax.faces.el in in JSF 1.2. Default value is true. |
+| o.a.m.SUPPORT_MANAGED_BEANS | 2.3 | true | true,false | If set false, myfaces won't support ManagedBeans anymore. ManagedBeans are deprecated in JSF 2.3, Default value is true. |
+
+
+### Render
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG | 2.0.1 | false | true, false, on, off, yes, no | Wrap content inside script with xml comment to prevent old browsers to display it |
+| o.a.m.DEFAULT_RESPONSE_WRITER_CONTENT_TYPE_MODE | 2.0.11,2.1.5 | text/html | text/html, application/xhtml+xml | Define the default content type that the default ResponseWriter generates, when no match can be derived from HTTP Accept Header |
+| o.a.m.STRICT_XHTML_LINKS | 1.1.6 | true | true, false, on, off, yes, no | Use "&amp;amp;" entity instead a plain "&amp;" character within HTML |
+| o.a.m.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON | 1.2.3 | false | true, false, on, off, yes, no | This param renders the clear javascript on button necessary only for compatibility with hidden fields feature of myfaces |
+| o.a.m.RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS | 1.2.9 | false | true, false, on, off, yes, no | This param renders hidden fields at the end of h:form for link params when h:commandLink + f:param is used, instead use javascript to create them |
+| o.a.m.SAVE_FORM_SUBMIT_LINK_IE | 1.1 | false | true, false, on, off, yes, no | Add a code that save the form before submit using a link |
+| o.a.m.EARLY_FLUSH_ENABLED | 2.2.0 | false | true, false | Enable or disable an early flush which allows to send e.g. the HTML-Head to the client while the rest gets rendered. It's a well known technique to reduce the time for loading a page. |
+| o.a.m.RENDER_FORM_VIEW_STATE_AT_BEGIN | 2.2.4 | false | true,false | This param makes h:form component to render the view state and other hidden fields at the beginning of the form |
+| o.a.m.USE_MULTIPLE_JS_FILES_FOR_JSF_UNCOMPRESSED_JS | 2.0.1 | false | true,false | If this param is true and the project stage is development mode, the source javascript files will be loaded separately instead have all in just one file, to preserve line numbers and make javascript debugging of the default jsf javascript file more simple |
+| o.a.m.JSF_JS_MODE | 2.0.10,2.1.4 | normal | normal, minimal-modern, minimal | Define the mode used for jsf |
+
+### ViewHandler
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.DEFAULT_SUFFIX | 1.1 | .xhtml .view.xml .jsp |  | Indicate the default suffixes, separated by spaces to derive the default file URI  used by JSF to create views and render pages |
+| javax.faces.FACELETS_SUFFIX | 2.0 | .xhtml |  | The default extension used to handle facelets pages |
+| javax.faces.FACELETS_VIEW_MAPPINGS | 2.0 |  |  | Set of extensions handled by facelets, separated by ';' |
+| javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER | 2.0 | false | true,false | Disable facelets VDL from the current application project |
+| o.a.m.VIEW_UNIQUE_IDS_CACHE_ENABLED | 2.0.13, 2.1.7 | true | true, false | Enable or disable a cache used to 'remember'  the generated facelets unique ids and reduce the impact over memory usage. |
+| o.a.m.COMPONENT_UNIQUE_IDS_CACHE_SIZE | 2.0.13, 2.1.7 | 100 |  | Set the size of the cache used to store strings generated using SectionUniqueIdCounter for component ids |
+| o.a.m.STRICT_JSF_2_VIEW_NOT_FOUND | 2.1.13 | false | true,false | If this param is set to true, a check will be done in Restore View Phase to check if the viewId exists or not and if it does not exists, a 404 response will be thrown |
+| o.a.m.STRICT_JSF_2_FACELETS_COMPATIBILITY | 2.2.0 | false | true,false | This param makes components like c:set, ui:param and templating components like ui:decorate, ui:composition and ui:include to behave like the ones provided originally in facelets 1_1_x |
+| o.a.m.CHECKED_VIEWID_CACHE_SIZE | 2.0.2 | 500 |  | Controls the size of the cache used to 'remember' if a view exists or not. |
+| o.a.m.CHECKED_VIEWID_CACHE_ENABLED | 2.0.2 | true | true, false | Enable or disable a cache used to 'remember' if a view exists or not and reduce the impact of sucesive calls to ExternalContext.getResource(). |
+| o.a.m.JSP_SUFFIX |2.3 | .jsp | | |
+
+###  Resources
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.RESOURCE_EXCLUDES | 2.0 | .class .jsp .jspx .properties .xhtml .groovy |  | Space separated file extensions that will not be served by the default ResourceHandler implementation |
+| o.a.m.RESOURCE_MAX_TIME_EXPIRES | 2.0 | 604800000 |  | Set the max time in miliseconds set on the "Expires" header for a resource rendered by the default ResourceHandler |
+| o.a.m.RESOURCE_HANDLER_CACHE_SIZE | 2.0.2 | 500 |  | Controls the size of the cache used to check if a resource exists or not |
+| o.a.m.RESOURCE_HANDLER_CACHE_ENABLED | 2.0.2 | true | true,false | Enable or disable the cache used to "remember" if a resource handled by the default ResourceHandler exists or not |
+| o.a.m.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME | 2.1.6, 2.0.12 | false | true, false | Allow slash in the library name of a Resource |
+| o.a.m.RESOURCE_BUFFER_SIZE | 2.1.10, 2.0.16 | 2048 |  | Define the default buffer size that is used between Resource |
+
+
+### State
+
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.STATE_SAVING_METHOD | 1.1 | server | server,client | Define the state method to be used. There are two different options defined by the specification: 'client' and 'server' state. |
+| javax.faces.FULL_STATE_SAVING_VIEW_IDS | 2.0 |  |  | Indicate the viewId(s) separated by commas that should be saved and restored fully, without use Partial State Saving (PSS) |
+| javax.faces.PARTIAL_STATE_SAVING | 2.0 | true (false with 1.2 webapps) | true,false | Enable or disable partial state saving algorithm |
+| javax.faces.SERIALIZE_SERVER_STATE | 2.2 | false | true,false | Indicate if the state should be serialized before save it on the session |
+| o.a.m.USE_ENCRYPTION | 1.1 | true | true,false | Indicate if the view state is encrypted or not |
+| o.a.m.SECRET | 1.1 |  |  | Defines the secret (Base64 encoded) used to initialize the secret key for encryption algorithm |
+| o.a.m.ALGORITHM | 1.1 | DES |  | Indicate the encryption algorithm used for encrypt the view state |
+| o.a.m.SECRET.CACHE | 1.1 |  |  | If is set to "false", the secret key used for encryption algorithm is not cached |
+| o.a.m.ALGORITHM.IV | 1.1 |  |  | Defines the initialization vector (Base64 encoded) used for the encryption algorithm |
+| o.a.m.ALGORITHM.PARAMETERS | 1.1 | ECB/PKCS5Padding |  | Defines the default mode and padding used for the encryption algorithm |
+| o.a.m.SERIAL_FACTORY | 1.1 |  |  | Defines the factory class name using for serialize/deserialize the view state returned by state manager into a byte array |
+| o.a.m.COMPRESS_STATE_IN_CLIENT | 1.1 | false | true,false | Indicate if the view state should be compressed before encrypted(optional) and encoded |
+| o.a.m.MAC_ALGORITHM |  | HmacSHA1 |  | Indicate the algorithm used to calculate the Message Authentication Code that is added to the view state |
+| o.a.m.MAC_SECRET |  |  |  | Define the initialization code that are used to initialize the secret key used on the Message Authentication Code algorithm |
+| o.a.m.MAC_SECRET.CACHE |  |  |  | If is set to "false", the secret key used for MAC algorithm is not cached |
+| o.a.m.CLIENT_VIEW_STATE_TIMEOUT | 2.1.9, 2.0.15 | 0 |  | Define the time in minutes where the view state is valid when client side state saving is used |
+| o.a.m.COMPRESS_STATE_IN_SESSION | 1.1 | true | true,false | Indicates that the serialized state will be compressed before it is written to the session |
+| o.a.m.USE_FLASH_SCOPE_PURGE_VIEWS_IN_SESSION | 2.0.6 | false | true, false | Allow use flash scope to keep track of the views used in session and the previous ones, so server side state saving can delete old views even if POST-REDIRECT-GET pattern is used |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN | 2.1.9, 2.0.15 | none | secureRandom, random, none | Adds a random key to the generated view state session token |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_LENGTH | 2.1.9, 2.0.15 | 8 |  | Set the default length of the random key added to the view state session token |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_CLASS | 2.1.9, 2.0.15 |  |  | Sets the random class to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_PROVIDER | 2.1.9, 2.0.15 |  |  | Sets the random provider to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_ALGORITM | 2.1.9, 2.0.15 | SHA1PRNG |  | Sets the random algorithm to initialize the secure random id generator |
+| o.a.m.CHECK_ID_PRODUCTION_MODE | 2.0.12, 2.1.6 | auto | true, auto, false | Define how duplicate ids are checked when ProjectStage is Production, by default (auto) it only check ids of components that does not encapsulate markup (like facelets UILeaf) |
+| o.a.m.REFRESH_TRANSIENT_BUILD_ON_PSS | 2.0 | auto | true,false,auto | Indicate if the facelet associated to the view should be reapplied when the view is refreshed |
+| o.a.m.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE | 2.0 | false | true, false, on, off, yes, no | Enable or disable a special mode that enable full state for parent components containing c:if, c:forEach,  c:choose and ui:include with src=ELExpression |
+| o.a.m.RENDER_VIEWSTATE_ID | 1.1 | true | true, false, on, off, yes, no | efine if the input field that should store the state (javax.faces.ViewState) should render id="javax.faces.ViewState". |
+| o.a.m.NUMBER_OF_VIEWS_IN_SESSION | 1.1 | 20 |  | Defines the amount (default = 20) of the latest views are stored in session |
+| o.a.m.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION | 2.0.6 | 4 |  | Indicates the amount of views (default is not active) that should be stored in session between sequential POST or POST-REDIRECT-GET if org |
+| o.a.m.NUMBER_OF_FLASH_TOKENS_IN_SESSION | 2.2.6 |  |  | Indicate the max number of flash tokens stored into session |
+| o.a.m.FACES_FLOW_CLIENT_WINDOW_IDS_IN_SESSION | 2.2.6 |  |  | Indicate the max number of client window ids stored into session by faces flow |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN | 2.2.0 | none | secureRandom, random | Defines how to generate the csrf session token |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_LENGTH | 2.2.0 | 16 |  | Set the default length of the random key used for the csrf session token |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_CLASS | 2.2.0 |  |  | Sets the random class to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_PROVIDER | 2.2.0 |  |  | Sets the random provider to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_ALGORITM | 2.2.0 | SHA1PRNG |  | Sets the random algorithm to initialize the secure random id generator |
+| o.a.m.AUTOCOMPLETE_OFF_VIEW_STATE | 2.2.8, 2.1.18, 2.3.6 | true | true, false | Add autocomplete="off" to the view state hidden field |
+
+### Deprecated
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| facelets.BUFFER_SIZE | 2.0 |  |  | Define the default buffer size value passed to ExternalContext |
+| facelets.REFRESH_PERIOD | 2.0 | -1 |  | Define the period used to refresh the facelet abstract syntax tree from the view definition file |
+| facelets.RESOURCE_RESOLVER | 2.0 |  |  | Class implementing ResourceResolver interface used to locate facelet resources |
+| facelets.DECORATORS | 2.0 |  |  | Set of class names, separated by ';', implementing TagDecorator interface, used to transform a view definition in a facelet abstract syntax tree, that is used later to generate a component tree |
+| facelets.SKIP_COMMENTS | 2.0 |  |  | Skip comments found on a facelet file |
+| facelets.LIBRARIES | 2.0 |  |  | Set of .taglib.xml files, separated by ';' that should be loaded by facelet engine. |
+| o.a.m.SERIALIZE_STATE_IN_SESSION | 1.1 | false | true,false | Indicate if the state should be serialized before save it on the session. Use javax.faces.SERIALIZE_SERVER_STATE. |
+
+## Integration / SPI
+
+> :warning: **usually common users of MyFaces Core does not need to deal with these specific stuff, because the application/web server could already provide the necessary hooks or integration modules "out of the box"**
+
+MyFaces core provides some "points of integration" that can be used by application and web servers to override or add some specific code.
+For example, JBoss AS provides a custom virtual file system (VFS), and MyFaces core needs to scan for faces-config.xml files, so it is necessary to provide some code that uses JBoss VFS to locate faces-config.xml files to be parsed later.
+
+Some features uses Service Provider Interface (SPI) pattern, so take a look at java.util.ServiceLoader description in java 6 api to get the idea how it works.
+
+Below there is a table of the "points of integration" used by application and web servers:
+
+| Integration Point                                                          | Classes Involved                                                   | Description                                                                                                                                                                                                                                                                                                                                              [...]
+|----------------------------------------------------------------------------|--------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| @PostConstruct and @PreDestroy injection over jsf managed beans            | org.apache.myfaces.config.annotation.LifecycleProvider2   org.apache.myfaces.config.annotation.LifecycleProviderFactory            | Provide methods to delegate injection of @PostConstruct and @PreDestroy annotations to the server for custom processing.                                                                                                                                                                 [...]
+| Override SPI handling                                                      | org.apache.myfaces.spi.ServiceProviderFinder  <br/> org.apache.myfaces.spi.ServiceProviderFinderFactory  | Override SPI handling done by MyFaces Core, usually taking advantage of container specific features to scan files inside jars.                                                                                                                                                                                     [...]
+| Annotation Scanning                                                        | org.apache.myfaces.spi.AnnotationProvider <br/> org.apache.myfaces.spi.AnnotationProviderWrapper <br/> org.apache.myfaces.spi.AnnotationProviderFactory | Override/wrap myfaces annotation scanning algorithm that needs to be processed at startup.                                                                                                                                                                          [...]
+| Locate facelet .taglib.xml files through classpath.                        | org.apache.myfaces.spi.FaceletConfigResourceProvider <br/> org.apache.myfaces.spi.FaceletConfigResourceProviderFactory             | Locate facelet .taglib.xml files through classpath. These files has definitions that are used by facelets algorithm to parse view files.                                                                                                                                                 [...]
+| Locate faces-config.xml files through classpath.                           | org.apache.myfaces.spi.FacesConfigResourceProvider <br/>  org.apache.myfaces.spi.FacesConfigResourceProviderFactory               | Locate faces-config xml files through classpath. These files has definitions that are used by initialize jsf environment. By default it locate all files inside META-INF folder, named faces-config.xml or ending with .faces-config.xml                                                  [...]
+| Get an unified configuration after sort and order all config files.        | org.apache.myfaces.spi.FacesConfigurationMerger <br/> org.apache.myfaces.spi.FacesConfigurationMergerFactory <br/> org.apache.myfaces.config.element.*   | Get all org.apache.myfaces.config.element.FacesConfig data  and then it combines it into one org.apache.myfaces.config.element.FacesConfigData instance.                                                                                                           [...]
+| Get configuration information from different sources and allow cache them. | org.apache.myfaces.spi.FacesConfigurationProvider <br/> org.apache.myfaces.spi.FacesConfigurationProviderFactory <br/> org.apache.myfaces.config.element.*                 | This interface provide a way to merge and store all JSF config information retrieved from faces-config.xml files, META-INF/service files and annotations that works as base point to initialize MyFaces. The objective is allow server container [...]
+| Override javax.faces.FactoryFinder default algorithm                       | org.apache.myfaces.spi.FactoryFinderProvider <br/> org.apache.myfaces.spi.FactoryFinderProviderFactory                  | Provide an interface to override javax.faces.FactoryFinder class methods. This is useful if containers does not want to use Thread Context Class Loader to load classes, like in OSGi.                                                                                                              [...]
+| Provide additional info from web.xml files                                 | org.apache.myfaces.spi.WebConfigProvider <br/>  org.apache.myfaces.spi.WebConfigProviderFactory   org.apache.myfaces.spi.ServletMapping                     | Provide additional info from web.xml files, like mapping or if an error page is present.                                                                                                                                                                        [...]
+| Override initialization and destroy web applications                       | org.apache.myfaces.webapp.FacesInitializer <br/> org.apache.myfaces.webapp.FacesInitializerFactory                      | Allow customize initialization / destroy operations or provide an alternate MyFaces initializer to a specific container.                                                                                                                                                                            [...]
+| Scan for annotated Flows and manage Flow scope                             | org.apache.myfaces.spi.FacesFlowProvider <br/> org.apache.myfaces.spi.FacesFlowProviderFactory                         | In this interface @FlowDefinition annotation is scanned for flows defined programatically and it is also managed the flow scope logic. By default MyFaces provides two implementations, one using CDI and one without CDI (that only manages flow scope)                                             [...]
+| Manage View scope                                                          | org.apache.myfaces.spi.ViewScopeProvider <br/> org.apache.myfaces.spi.ViewScopeProviderFactory                          | This interface manage the logic to plug the view scope with JSF. It has some methods to handle view scope destroy or session destroy                                                                                                                                                                [...]
+| Scan for available contracts                                               | org.apache.myfaces.spi.ResourceLibraryContractsProvider <br/> org.apache.myfaces.spi.ResourceLibraryContractsProviderFactory           | Provides an interface to scan for the available resource library contracts in the current environment. By default it scans using external context getResource(...) methods and in the classpath according to JSF spec.                                                               [...]
+
+
+
+
+
diff --git a/core23next.md b/core23next.md
new file mode 100644
index 0000000..6801299
--- /dev/null
+++ b/core23next.md
@@ -0,0 +1,248 @@
+# Apache MyFaces Core 2.3-next
+
+(Almost) Implementation of the JavaServer™ Faces (JSF) 2.3 specification.  
+2.3-next equals the JSF 2.3 API but delegates @ManagedBeans to CDI.  
+The implementation of the old FacesEL (javax.faces.el.*) has been completely removed.  
+It will be the base of the upcoming JSF 4.0.  
+
+## Requirements
+* Java 1.8
+* Servlet 3.0 (4.0 will enable JSF to serve resources via HTTP/2 push)
+* EL 2.2
+* CDI 1.2
+* JSTL 1.2 (optional)
+* BV 1.1 (optional)
+
+## Source
+[Apache GitBox](https://gitbox.apache.org/repos/asf?p=myfaces.git;a=shortlog;h=refs/heads/master) / [GitHub](https://github.com/apache/myfaces/tree/master)
+
+## Downloads
+
+|     | Mirrors                                                                                                                      | Checksum                                                                                                                     | Signature                                                                                                                                |
+|-----------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
+| binary (tar.gz) | [myfaces-core-assembly-2.3-next-M3-bin.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-2.3-next-M3-bin.tar.gz) | [myfaces-core-assembly-2.3-next-M3-bin.tar.gz.sha512](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.3-next-M3-bin.tar.gz.sha512) | [myfaces-core-assembly-2.3-next-M3-bin.tar.gz.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.3-next-M3-bin.tar.gz.asc) |
+| binary (zip)    | [myfaces-core-assembly-2.3-next-M3-bin.zip](http://www.apache.org/dyn/closer.lua/myfaces/binaries/myfaces-core-assembly-2.3-next-M3-bin.zip)       | [myfaces-core-assembly-2.3-next-M3-bin.zip.sha512](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.3-next-M3-bin.zip.sha512)       | [myfaces-core-assembly-2.3-next-M3-bin.zip.asc](https://downloads.apache.org/myfaces/binaries/myfaces-core-assembly-2.3-next-M3-bin.zip.asc)       |
+| source (tar.gz) | [myfaces-core-assembly-2.3-next-M3-src.tar.gz](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-2.3-next-M3-src.tar.gz)   | [myfaces-core-assembly-2.3-next-M3-src.tar.gz.sha512](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.3-next-M3-src.tar.gz.sha512)   | [myfaces-core-assembly-2.3-next-M3-src.tar.gz.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.3-next-M3-src.tar.gz.asc)   |
+| source (zip)    | [myfaces-core-assembly-2.3-next-M3-src.zip](http://www.apache.org/dyn/closer.lua/myfaces/source/myfaces-core-assembly-2.3-next-M3-src.zip)         | [myfaces-core-assembly-2.3-next-M3-src.zip.sha512](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.3-next-M3-src.zip.sha512)         | [myfaces-core-assembly-2.3-next-M3-src.zip.asc](https://downloads.apache.org/myfaces/source/myfaces-core-assembly-2.3-next-M3-src.zip.asc)         |
+
+## Dependency
+```xml
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-api</artifactId>
+  <version>2.3-next-M3</version>
+</dependency>
+<dependency>
+  <groupId>org.apache.myfaces.core</groupId>
+  <artifactId>myfaces-impl</artifactId>
+  <version>2.3-next-M3</version>
+</dependency>
+```
+
+## Configuration
+
+MyFaces core behavior can be customized, adding some web config params into your WEB-INF/web.xml or META-INF/web-fragment.xml file for your custom project in this way:
+
+```xml
+<context-param>
+	<param-name>org.apache.myfaces.SOME_USEFUL_PARAM</param-name>
+	<param-value>someValue</param-value>
+</context-param>
+```
+
+> :warning: **The table below uses `o.a.m` as shortcut for `org.apache.myfaces`**
+
+### Common
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.PROJECT_STAGE| 2.0| Production| Development, Production, SystemTest, UnitTest| no description|
+| javax.faces.FACELETS_BUFFER_SIZE| 2.0| 1024| | Define the default buffer size value passed to ExternalContext.setResponseBufferResponse() and in " + "a servlet environment to HttpServletResponse.setBufferSize()|
+| javax.faces.FACELETS_DECORATORS| 2.0| | | Set of class names, separated by ';', implementing TagDecorator interface, used to transform a view definition in a facelet abstract syntax tree, that is used later to generate a component tree|
+| javax.faces.FACELETS_LIBRARIES| 2.0| | | Set of .taglib.xml files, separated by ';' that should be loaded by facelet engine.|
+| javax.faces.FACELETS_REFRESH_PERIOD| 2.0| -1| | Define the period used to refresh the facelet abstract syntax tree from the view definition file|
+| javax.faces.FACELETS_SKIP_COMMENTS| 2.0| | | Skip comments found on a facelet file|
+| javax.faces.HONOR_CURRENT_COMPONENT_ATTRIBUTES| 2.1.0| false| true, false| Indicate if the facesContext attribute values under the keys javax|
+| javax.faces.VIEWROOT_PHASE_LISTENER_QUEUES_EXCEPTIONS| 2.3| false| true, false| no description|
+| javax.faces.CLIENT_WINDOW_MODE| 2.2.0| none| none, url, url-redirect, client| Defines the ClientWindow mode to use|
+| javax.faces.CONFIG_FILES| 1.1| | | Comma separated list of URIs of (additional) faces config files|
+| javax.faces.LIFECYCLE_ID| 1.1| | | Identify the Lifecycle instance to be used|
+| javax.faces.DISABLE_FACESSERVLET_TO_XHTML| 2.3| | | Disable automatic FacesServlet xhtml mapping|
+| javax.faces.FACELETS_RESOURCE_RESOLVER| 2.0| | | Class implementing ResourceResolver interface used to locate facelet resources|
+| javax.faces.WEBSOCKET_ENDPOINT_PORT| 2.3| | | Indicates the port used for websocket connections|
+| o.a.m.VIEW_POOL_MAX_POOL_SIZE| | 5| | Defines the number of views to be hold per each view metadata definition|
+| o.a.m.VIEW_POOL_MAX_DYNAMIC_PARTIAL_LIMIT| | 2| | Defines the limit of the views that cannot be reused partially|
+| o.a.m.VIEW_POOL_ENTRY_MODE| | soft| weak,soft| Defines the type of memory reference that is used to hold the view into memory|
+| o.a.m.VIEW_POOL_DEFERRED_NAVIGATION| | false| true, false| Defines if the view pool uses deferred navigation to recycle views when navigation is performed|
+| o.a.m.USE_LAMBDA_METAFACTORY| 2.3-next| true| true,false| Defines if Lambda expressions (via LambdaMetafactory) are used for getter/setter instead of Reflection|
+| o.a.m.CONFIG_REFRESH_PERIOD| 1.1| 2| | Set the time in seconds that check for updates of web|
+| o.a.m.VALIDATE_XML| 2.0| | true, false, on, off, yes, no| If set to <code>true</code>, tag library XML files and faces config XML files using schema 
+| o.a.m.FACES_INIT_PLUGINS| 2.0| | | comma delimited list of plugin classes which can be hooked into myfaces|
+| o.a.m.INITIALIZE_SKIP_JAR_FACES_CONFIG_SCAN| 2.2.10| false| true, false| If the flag is true, the algoritm skip jar scanning for faces-config files to check if the current application requires FacesServlet to be added dynamically (servlet spec 3)|
+| o.a.m.INITIALIZE_ALWAYS_STANDALONE| 2.0.3| false| | If this param is set to true, the check for faces servlet mapping is not done|
+| o.a.m.WRAP_TAG_EXCEPTIONS_AS_CONTEXT_AWARE| 2.0.9, 2.1.3| true| true, false| Wrap exception caused by calls to EL expressions, so information like the location, expression string and tag name can be retrieved by the ExceptionHandler implementation and used to output meaningful information about itself|
+| o.a.m.RESOURCE_CACHE_LAST_MODIFIED| 2.3-next| true| true, false| Defines if the last-modified should be cached of the resources when the ProjectStage is Production|
+| o.a.m.LOG_WEB_CONTEXT_PARAMS| | auto| true, auto, false| Indicate if log all web config params should be done before initialize the webapp|
+| o.a.m.AUTOMATIC_EXTENSIONLESS_MAPPING| 2.3| false| true, false| This parameter enables automatic extensionless mapping for all JSF views|
+| o.a.m.FACES_INITIALIZER| 2.0.1| | | Class name of a custom FacesInitializer implementation.|
+| o.a.m.spi.InjectionProvider| 2.2| | | Define the class implementing InjectionProvider interface to handle dependendy injection, PostConstruct and PreDestroy callbacks|
+| o.a.m.WEBSOCKET_MAX_CONNECTIONS| 2.3| | | no description|
+| o.a.m.RENDER_CLIENTBEHAVIOR_SCRIPTS_AS_STRING| 2.3-next| false| | Defines if the clientbehavior scripts are passed as string or function to the jsf|
+| o.a.m.ALWAYS_FORCE_SESSION_CREATION| 2.3-next-M3| false| true,false| Defines if a session should be created (if one does not exist) before response rendering|
+| o.a.m.RESOURCE_BUNDLE_CONTROL| 2.3-next| | | Defines the {@link java|
+| o.a.m.DEFAULT_WINDOW_MODE| 2.2| url| | no description|
+| o.a.m.ERROR_TEMPLATE_RESOURCE| 1.2.4| META-INF/rsc/myfaces-dev-error.xml| | Indicate the template name used to render the default error page used by MyFaces specific  error handler implementation|
+| o.a.m.DEBUG_TEMPLATE_RESOURCE| 1.2.4| META-INF/rsc/myfaces-dev-debug.xml| | Indicate the template name used to render the default debug page (see ui:debug tag)|
+| o.a.m.ERROR_HANDLING| 1.2.4| false, on Development Project stage: true| true,false| Indicate if myfaces is responsible to handle errors|
+| o.a.m.SERVICE_PROVIDER_FINDER| 2.0.3| | | Class name of a custom ServiceProviderFinder implementation.|
+| o.a.m.DEBUG_PHASE_LISTENER| 2.0.8| | | Enable/disable DebugPhaseListener feature, with provide useful information about ValueHolder variables (submittedValue, localValue, value)|
+| o.a.m.VALIDATE| 2.0| false| true, false| Validate if the managed beans and navigations rules are correct|
+| o.a.m.annotation.USE_CDI_FOR_ANNOTATION_SCANNING| 2.2.9| false| | Defines if CDI should be used for annotation scanning to improve the startup performance|
+| o.a.m.STRICT_JSF_2_ORIGIN_HEADER_APP_PATH| 2.3| false| true,false| This parameter specifies whether or not the Origin header app path should be checked|
+| o.a.m.MARK_INITIAL_STATE_WHEN_APPLY_BUILD_VIEW| 2.1| false| true, false| no description|
+| o.a.m.DELEGATE_FACES_SERVLET| 1.2.7| | | Define an alternate class name that will be used to initialize MyFaces, instead the default javax|
+| o.a.m.annotation.SCAN_PACKAGES| 2.0| | | Servlet context init parameter which defines which packages to scan for beans, separated by commas|
+| o.a.m.WEBSOCKET_MAX_IDLE_TIMEOUT| | 300000| | no description|
+| o.a.m.TEMPORAL_RESOURCEHANDLER_CACHE_ENABLED| 2.1.11| false| true, false| If this param is set to true (default false), a temporal directory is created and all files handled by this ResourceLoader are cached there, avoiding the problem described on MYFACES-3586|
+| o.a.m.FLASH_SCOPE_DISABLED| 2.0.5| false| | Defines whether flash scope is disabled, preventing add the Flash cookie to the response|
+| o.a.m.LAZY_LOAD_CONFIG_OBJECTS| 2.0| true| | Indicate if the classes associated to components, converters, validators or behaviors should be loaded as soon as they are added to the current application instance or instead loaded in a lazy way|
+
+
+### Validation
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.VALIDATE_EMPTY_FIELDS| 2.0| auto| auto, true, false| Force validation on empty fields (By default is auto, which means it is only enabled when Bean Validation binaries are available on the current classpath)|
+| javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL| 2.0| false| true, false| Submitted values are decoded as null values instead empty strings|
+| o.a.m.CLEAR_INPUT_WHEN_SUBMITTED_VALUE_IS_NULL_OR_EMPTY| 2.3.0| true| true, false| When CLEAR_INPUT_WHEN_SUBMITTED_VALUE_IS_NULL_OR_EMPTY is enabled, input fields will be cleared when null or empty values are submitted|
+| javax.faces.ALWAYS_PERFORM_VALIDATION_WHEN_REQUIRED_IS_TRUE| 2.3| false| true, false| If set to true, validation is always performed when required is true|
+| javax.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE| 2.0| false| true, false| Set the default timezone as system timezone when a converter extending from DateTimeConverter is created|
+| o.a.m.ENUM_CONVERTER_ALLOW_STRING_PASSTROUGH| 2.0.1| false| true,false| If value is a String instance and this param is true, pass it directly without try any change|
+| javax.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR| 2.0| true| true, false| If this init parameter is present, no Bean Validators should be added to an UIInput by default|
+| javax.faces.validator.ENABLE_VALIDATE_WHOLE_BEAN| 2.3| false| true, false| Enable f:validateWholeBean use|
+| o.a.m.validator.BEAN_BEFORE_JSF_VALIDATION| 2.2.10| false| true, false| Enforce f:validateBean to be called first before any JSF validator|
+
+### EL
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.SUPPORT_JSP| 2.0.13,2.1.7| true| true,false| If set false, myfaces won't support JSP. JSP are deprecated in " + "JSF 2.X. Default value is true.|
+| o.a.m.SUPPORT_EL_3_IMPORT_HANDLER| 2.2.9| false| true,false| This parameter specifies whether or not the ImportHandler will be supported|
+| o.a.m.EL_RESOLVER_COMPARATOR| 1.2.10, 2.0.2| | | The Class of an Comparator&lt;ELResolver&gt; implementation.|
+| o.a.m.EL_RESOLVER_PREDICATE| 2.1.0| | | The Class of an java.util.function.Predicate&lt;ELResolver&gt; implementation." + "If used and returns false for a ELResolver instance, such resolver will not be installed in " + "ELResolvers chain. Use with caution - can break functionality defined in JSF specification " + "'ELResolver Instances Provided by Faces'|
+| o.a.m.EXPRESSION_FACTORY| 1.2.7| | | This parameter specifies the ExpressionFactory implementation to use|
+| o.a.m.CACHE_EL_EXPRESSIONS| 2.0.8| noCache| noCache, strict, allowCset, always, alwaysRecompile| Indicates if expressions generated by facelets should be cached or not|
+| o.a.m.STRICT_JSF_2_CC_EL_RESOLVER| 2.0.10| false| true, false| Change default getType() behavior for composite component EL resolver, from return null (see JSF 2_0 spec section 5_6_2_2) to use the metadata information added by composite:attribute, ensuring components working with chained EL expressions to find the right type when a getType() is called over the source EL expression|
+
+### Render
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.STRICT_XHTML_LINKS| 1.1.6| true| true, false, on, off, yes, no| Use "&amp;amp;" entity instead a plain "&amp;" character within HTML|
+| o.a.m.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON| 1.2.3| false| true, false, on, off, yes, no| This param renders the clear javascript on button necessary only for compatibility with hidden fields feature of myfaces|
+| o.a.m.WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG| 2.0.1| false| true, false, on, off, yes, no| Wrap content inside script with xml comment to prevent old browsers to display it|
+| o.a.m.EARLY_FLUSH_ENABLED| 2.2.0| false| true, false| Enable or disable an early flush which allows to send e.g. the HTML-Head to the client " + "while the rest gets rendered. It's a well known technique to reduce the time for loading a page.|
+| o.a.m.RENDER_FORM_VIEW_STATE_AT_BEGIN| 2.2.4| false| true,false| This param makes h:form component to render the view state and other hidden fields at the beginning of the form|
+| o.a.m.USE_MULTIPLE_JS_FILES_FOR_JSF_UNCOMPRESSED_JS| 2.0.1| false| true,false| If this param is true and the project stage is development mode, the source javascript files will be loaded separately instead have all in just one file, to preserve line numbers and make javascript debugging of the default jsf javascript file more simple|
+| o.a.m.JSF_JS_MODE| 2.0.10,2.1.4| normal| normal, minimal-modern, minimal| Define the mode used for jsf|
+| o.a.m.DEFAULT_RESPONSE_WRITER_CONTENT_TYPE_MODE| 2.0.11,2.1.5| text/html| text/html, application/xhtml+xml| Define the default content type that the default ResponseWriter generates, when no match can be derived from HTTP Accept Header|
+
+### ViewHandler
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.DEFAULT_SUFFIX| 1.1| .xhtml .view.xml .jsp| | Indicate the default suffixes, separated by spaces to derive the default file URI used by JSF to create views and render pages|
+| javax.faces.FACELETS_SUFFIX| 2.0| .xhtml| | The default extension used to handle facelets pages|
+| javax.faces.FACELETS_VIEW_MAPPINGS| 2.0| | | Set of extensions handled by facelets, separated by ';'|
+| o.a.m.VIEWID_CACHE_SIZE| 2.0.2| 500| | Controls the size of the viewId related caches: " + "VIEWID_EXISTS_CACHE_ENABLED, VIEWID_PROTECTED_CACHE_ENABLED, VIEWID_DERIVE_CACHE_ENABLED|
+| o.a.m.VIEWID_EXISTS_CACHE_ENABLED| 2.0.2| true| true, false| Enable or disable the cache used to 'remember' if a view exists or not and reduce the impact " + "of sucesive calls to ExternalContext.getResource().|
+| o.a.m.VIEWID_PROTECTED_CACHE_ENABLED| 2.3-next| true| true, false| Enable or disable the cache used to 'remember' if a view is protected or not.|
+| o.a.m.VIEWID_DERIVE_CACHE_ENABLED| 2.3-next| true| true, false| Enable or disable the cache used to 'remember' the derived viewId from the rawViewId.|
+| o.a.m.JSP_SUFFIX| 2.3| .jsp| | no description|
+| o.a.m.VIEW_UNIQUE_IDS_CACHE_ENABLED| 2.0.13, 2.1.7| true| true, false| Enable or disable a cache used to 'remember'  the generated facelets unique ids " + "and reduce the impact over memory usage.|
+| o.a.m.COMPONENT_UNIQUE_IDS_CACHE_SIZE| 2.0.13, 2.1.7| 100| | Set the size of the cache used to store strings generated using SectionUniqueIdCounter for component ids|
+| o.a.m.STRICT_JSF_2_VIEW_NOT_FOUND| 2.1.13| false| true,false| If this param is set to true, a check will be done in Restore View Phase to check if the viewId exists or not and if it does not exists, a 404 response will be thrown|
+| o.a.m.STRICT_JSF_2_FACELETS_COMPATIBILITY| 2.2.0| false| true,false| This param makes components like c:set, ui:param and templating components like ui:decorate, ui:composition and ui:include to behave like the ones provided originally in facelets 1_1_x|
+
+###  Resources
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.RESOURCE_EXCLUDES| 2.0| .class .jsp .jspx .properties .xhtml .groovy| | Space separated file extensions that will not be served by the default ResourceHandler implementation|
+| o.a.m.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME| 2.1.6, 2.0.12| false| true, false| Allow slash in the library name of a Resource|
+| o.a.m.RESOURCE_BUFFER_SIZE| 2.1.10, 2.0.16| 2048| | Define the default buffer size that is used between Resource|
+| o.a.m.RESOURCE_HANDLER_CACHE_SIZE| 2.0.2| 500| | Controls the size of the cache used to check if a resource exists or not|
+| o.a.m.RESOURCE_HANDLER_CACHE_ENABLED| 2.0.2| true| true,false| Enable or disable the cache used to "remember" if a resource handled by the default ResourceHandler exists or not|
+| o.a.m.RESOURCE_MAX_TIME_EXPIRES| 2.0| 604800000| | Set the max time in miliseconds set on the "Expires" header for a resource rendered by the default ResourceHandler|
+
+
+### State
+
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| javax.faces.STATE_SAVING_METHOD| 1.1| server| server,client| Define the state method to be used. There are two different options " + "defined by the specification: 'client' and 'server' state.|
+| javax.faces.FULL_STATE_SAVING_VIEW_IDS| 2.0| | | Indicate the viewId(s) separated by commas that should be saved and restored fully, without use Partial State Saving (PSS)|
+| javax.faces.PARTIAL_STATE_SAVING| 2.0| true (false with 1.2 webapps)| true,false| Enable or disable partial state saving algorithm|
+| javax.faces.SERIALIZE_SERVER_STATE| 2.2| false| true,false| Indicate if the state should be serialized before save it on the session|
+| o.a.m.USE_ENCRYPTION| 1.1| true| true,false| Indicate if the view state is encrypted or not|
+| o.a.m.SECRET| 1.1| | | Defines the secret (Base64 encoded) used to initialize the secret key for encryption algorithm|
+| o.a.m.ALGORITHM| 1.1| DES| | Indicate the encryption algorithm used for encrypt the view state|
+| o.a.m.SECRET.CACHE| 1.1| | | If is set to "false", the secret key used for encryption algorithm is not cached|
+| o.a.m.ALGORITHM.IV| 1.1| | | Defines the initialization vector (Base64 encoded) used for the encryption algorithm|
+| o.a.m.ALGORITHM.PARAMETERS| 1.1| ECB/PKCS5Padding| | Defines the default mode and padding used for the encryption algorithm|
+| o.a.m.SERIAL_FACTORY| 1.1| | | Defines the factory class name using for serialize/deserialize the view state returned by state manager into a byte array|
+| o.a.m.COMPRESS_STATE_IN_CLIENT| 1.1| false| true,false| Indicate if the view state should be compressed before encrypted(optional) and encoded|
+| o.a.m.MAC_ALGORITHM| | HmacSHA1| | Indicate the algorithm used to calculate the Message Authentication Code that is added to the view state|
+| o.a.m.MAC_SECRET| | | | Define the initialization code that are used to initialize the secret key used on the Message Authentication Code algorithm|
+| o.a.m.MAC_SECRET.CACHE| | | | If is set to "false", the secret key used for MAC algorithm is not cached|
+| o.a.m.RENDER_VIEWSTATE_ID | 1.1 | true | true, false, on, off, yes, no | efine if the input field that should store the state (javax.faces.ViewState) should render id="javax.faces.ViewState". |
+| o.a.m.REFRESH_TRANSIENT_BUILD_ON_PSS| 2.0| auto| true,false,auto| Indicate if the facelet associated to the view should be reapplied when the view is refreshed|
+| o.a.m.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE| 2.0| false| true, false, on, off, yes, no| Enable or disable a special mode that enable full state for parent components containing c:if, c:forEach, c:choose and ui:include with src=ELExpression| will be validated during application start up|
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_LENGTH| 2.2.0| 16| | Set the default length of the random key used for the csrf session token|
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_CLASS| 2.2.0| | | Sets the random class to initialize the secure random id generator|
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_PROVIDER| 2.2.0| | | Sets the random provider to initialize the secure random id generator|
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_ALGORITM| 2.2.0| SHA1PRNG| | Sets the random algorithm to initialize the secure random id generator|´
+| o.a.m.RANDOM_KEY_IN_WEBSOCKET_SESSION_TOKEN| 2.2.0| none| secureRandom, random| Defines how to generate the csrf session token|
+| o.a.m.CLIENT_VIEW_STATE_TIMEOUT| 2.1.9, 2.0.15| 0| | Define the time in minutes where the view state is valid when client side state saving is used|
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN| 2.1.9, 2.0.15| random| secureRandom, random| Adds a random key to the generated view state session token|
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_LENGTH| 2.1.9, 2.0.15| 8| | Set the default length of the random key added to the view state session token|
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_CLASS| 2.1.9, 2.0.15| | | Sets the random class to initialize the secure random id generator|
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_PROVIDER| 2.1.9, 2.0.15| | | Sets the random provider to initialize the secure random id generator|
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_ALGORITHM| 2.1.9, 2.0.15| SHA1PRNG| | Sets the random algorithm to initialize the secure random id generator|
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN| 2.2.0| none| secureRandom, random| Defines how to generate the csrf session token|
+| o.a.m.COMPRESS_STATE_IN_SESSION| 1.1| true| true,false| Indicates that the serialized state will be compressed before it is written to the session|
+| o.a.m.USE_FLASH_SCOPE_PURGE_VIEWS_IN_SESSION| 2.0.6| false| true, false| Allow use flash scope to keep track of the views used in session and the previous ones, so server side state saving can delete old views even if POST-REDIRECT-GET pattern is used|
+| o.a.m.AUTOCOMPLETE_OFF_VIEW_STATE| 2.2.8, 2.1.18, 2.0.24| true| true, false| Add autocomplete="off" to the view state hidden field|
+| o.a.m.NUMBER_OF_VIEWS_IN_SESSION| 1.1| 20| | Defines the amount (default = 20) of the latest views are stored in session|
+| o.a.m.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION| 2.0.6| 4| | Indicates the amount of views (default is not active) that should be stored in session between sequential POST or POST-REDIRECT-GET if org|
+| o.a.m.CHECK_ID_PRODUCTION_MODE| 2.0.12, 2.1.6| auto| true, auto, false| Define how duplicate ids are checked when ProjectStage is Production, by default (auto) it only check ids of components that does not encapsulate markup (like facelets UILeaf)|
+| o.a.m.NUMBER_OF_FLASH_TOKENS_IN_SESSION| 2.2.6| | | Indicate the max number of flash tokens stored into session|
+| o.a.m.FACES_FLOW_CLIENT_WINDOW_IDS_IN_SESSION| 2.2.6| | | Indicate the max number of client window ids stored into session by faces flow|
+
+## Integration / SPI
+
+> :warning: **usually common users of MyFaces Core does not need to deal with these specific stuff, because the application/web server could already provide the necessary hooks or integration modules "out of the box"**
+
+MyFaces core provides some "points of integration" that can be used by application and web servers to override or add some specific code.
+For example, JBoss AS provides a custom virtual file system (VFS), and MyFaces core needs to scan for faces-config.xml files, so it is necessary to provide some code that uses JBoss VFS to locate faces-config.xml files to be parsed later.
+
+Some features uses Service Provider Interface (SPI) pattern, so take a look at java.util.ServiceLoader description in java 6 api to get the idea how it works.
+
+Below there is a table of the "points of integration" used by application and web servers:
+
+| Integration Point                                                          | Classes Involved                                                   | Description                                                                                                                                                                                                                                                                                                                                              [...]
+|----------------------------------------------------------------------------|--------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| Override SPI handling                                                      | org.apache.myfaces.spi.ServiceProviderFinder  <br/> org.apache.myfaces.spi.ServiceProviderFinderFactory  | Override SPI handling done by MyFaces Core, usually taking advantage of container specific features to scan files inside jars.                                                                                                                                                                                     [...]
+| Annotation Scanning                                                        | org.apache.myfaces.spi.AnnotationProvider <br/> org.apache.myfaces.spi.AnnotationProviderWrapper <br/> org.apache.myfaces.spi.AnnotationProviderFactory | Override/wrap myfaces annotation scanning algorithm that needs to be processed at startup.                                                                                                                                                                          [...]
+| Locate facelet .taglib.xml files through classpath.                        | org.apache.myfaces.spi.FaceletConfigResourceProvider <br/> org.apache.myfaces.spi.FaceletConfigResourceProviderFactory             | Locate facelet .taglib.xml files through classpath. These files has definitions that are used by facelets algorithm to parse view files.                                                                                                                                                 [...]
+| Locate faces-config.xml files through classpath.                           | org.apache.myfaces.spi.FacesConfigResourceProvider <br/>  org.apache.myfaces.spi.FacesConfigResourceProviderFactory               | Locate faces-config xml files through classpath. These files has definitions that are used by initialize jsf environment. By default it locate all files inside META-INF folder, named faces-config.xml or ending with .faces-config.xml                                                  [...]
+| Get an unified configuration after sort and order all config files.        | org.apache.myfaces.spi.FacesConfigurationMerger <br/> org.apache.myfaces.spi.FacesConfigurationMergerFactory <br/> org.apache.myfaces.config.element.*   | Get all org.apache.myfaces.config.element.FacesConfig data  and then it combines it into one org.apache.myfaces.config.element.FacesConfigData instance.                                                                                                           [...]
+| Get configuration information from different sources and allow cache them. | org.apache.myfaces.spi.FacesConfigurationProvider <br/> org.apache.myfaces.spi.FacesConfigurationProviderFactory <br/> org.apache.myfaces.config.element.*                 | This interface provide a way to merge and store all JSF config information retrieved from faces-config.xml files, META-INF/service files and annotations that works as base point to initialize MyFaces. The objective is allow server container [...]
+| Override javax.faces.FactoryFinder default algorithm                       | org.apache.myfaces.spi.FactoryFinderProvider <br/> org.apache.myfaces.spi.FactoryFinderProviderFactory                  | Provide an interface to override javax.faces.FactoryFinder class methods. This is useful if containers does not want to use Thread Context Class Loader to load classes, like in OSGi.                                                                                                              [...]
+| Provide additional info from web.xml files                                 | org.apache.myfaces.spi.WebConfigProvider <br/>  org.apache.myfaces.spi.WebConfigProviderFactory   org.apache.myfaces.spi.ServletMapping                     | Provide additional info from web.xml files, like mapping or if an error page is present.                                                                                                                                                                        [...]
+| Override initialization and destroy web applications                       | org.apache.myfaces.webapp.FacesInitializer <br/> org.apache.myfaces.webapp.FacesInitializerFactory                      | Allow customize initialization / destroy operations or provide an alternate MyFaces initializer to a specific container.                                                                                                                                                                            [...]
+| Scan for annotated Flows and manage Flow scope                             | org.apache.myfaces.spi.FacesFlowProvider <br/> org.apache.myfaces.spi.FacesFlowProviderFactory                         | In this interface @FlowDefinition annotation is scanned for flows defined programatically and it is also managed the flow scope logic. By default MyFaces provides two implementations, one using CDI and one without CDI (that only manages flow scope)                                             [...]
+| Manage View scope                                                          | org.apache.myfaces.spi.ViewScopeProvider <br/> org.apache.myfaces.spi.ViewScopeProviderFactory                          | This interface manage the logic to plug the view scope with JSF. It has some methods to handle view scope destroy or session destroy                                                                                                                                                                [...]
+| Scan for available contracts                                               | org.apache.myfaces.spi.ResourceLibraryContractsProvider <br/> org.apache.myfaces.spi.ResourceLibraryContractsProviderFactory           | Provides an interface to scan for the available resource library contracts in the current environment. By default it scans using external context getResource(...) methods and in the classpath according to JSF spec.                                                               [...]
+
+
+
+
+
+
+
+
diff --git a/core30.md b/core30.md
new file mode 100644
index 0000000..13ef6f8
--- /dev/null
+++ b/core30.md
@@ -0,0 +1,242 @@
+# Apache MyFaces Core 3.0
+
+Implementation of the Jakarta Faces 3.0 specification.
+
+## Requirements
+* Java 1.8
+* Servlet 2.5
+* EL 2.1
+* CDI 1.0 (optional)
+* JSTL 1.2 (optional)
+* BV 1.0 (optional)
+
+## Source
+[Apache GitBox](https://gitbox.apache.org/repos/asf?p=myfaces.git;a=shortlog;h=refs/heads/3.0.x) / [GitHub](https://github.com/apache/myfaces/tree/3.0.x)
+
+## Downloads
+
+Not released yet
+
+## Dependency
+
+Not released yet
+
+## Configuration
+
+MyFaces core behavior can be customized, adding some web config params into your WEB-INF/web.xml or META-INF/web-fragment.xml file for your custom project in this way:
+
+```xml
+<context-param>
+	<param-name>org.apache.myfaces.SOME_USEFUL_PARAM</param-name>
+	<param-value>someValue</param-value>
+</context-param>
+```
+
+> :warning: **The table below uses `o.a.m` as shortcut for `org.apache.myfaces`**
+
+### Common
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| DISABLE_FACELET_JSF_VIEWHANDLER | 2.2 |  |  | no description |
+| jakarta.faces.PROJECT_STAGE | 2.0 | Production | Development, Production, SystemTest, UnitTest | Indicate the stage of the initialized application |
+| jakarta.faces.FACELETS_BUFFER_SIZE | 2.0 | 1024 |  | Define the default buffer size value passed to ExternalContext.setResponseBufferResponse() and in a servlet environment to HttpServletResponse.setBufferSize() |
+| jakarta.faces.FACELETS_DECORATORS | 2.0 |  |  | Set of class names, separated by ';', implementing TagDecorator interface, used to transform a view definition in a facelet abstract syntax tree, that is used later to generate a component tree |
+| jakarta.faces.FACELETS_LIBRARIES | 2.0 |  |  | Set of .taglib.xml files, separated by ';' that should be loaded by facelet engine. |  |
+| jakarta.faces.FACELETS_REFRESH_PERIOD | 2.0 | -1 |  | Define the period used to refresh the facelet abstract syntax tree from the view definition file |
+| jakarta.faces.FACELETS_SKIP_COMMENTS | 2.0 |  |  | Skip comments found on a facelet file |
+| jakarta.faces.HONOR_CURRENT_COMPONENT_ATTRIBUTES | 2.1.0 | false | true, false | Indicate if the facesContext attribute values under the keys jakarta |
+| jakarta.faces.FACELETS_RESOURCE_RESOLVER | 2.0 |  |  | Class implementing ResourceResolver interface used to locate facelet resources |
+| jakarta.faces.CONFIG_FILES | 1.1 |  |  | Comma separated list of URIs of (additional) faces config files |
+| jakarta.faces.LIFECYCLE_ID | 1.1 |  |  | Identify the Lifecycle instance to be used |
+| jakarta.faces.VIEWROOT_PHASE_LISTENER_QUEUES_EXCEPTIONS | 2.3 | false | true, false | |
+| jakarta.faces.WEBSOCKET_ENDPOINT_PORT | 2.3 | | | Indicates the port used for websocket connections |
+| jakarta.faces.DISABLE_FACESSERVLET_TO_XHTML | 2.3 | | | Disable automatic FacesServlet xhtml mapping |
+| o.a.m.CONFIG_REFRESH_PERIOD | 1.1 | 2 |  | Set the time in seconds that check for updates of web |
+| o.a.m.DELEGATE_FACES_SERVLET | 1.2.7 |  |  | Define an alternate class name that will be used to initialize MyFaces, instead the default jakarta |
+| o.a.m.VALIDATE_XML | 2.0 |  | true, false, on, off, yes, no | If set to <code>true</code>, tag library XML files and faces config XML files using schema will be validated during application start up |
+| o.a.m.DEBUG_PHASE_LISTENER | 2.0.8 |  |  | Enable/disable DebugPhaseListener feature, with provide useful information about ValueHolder  variables (submittedValue, localValue, value) |
+| o.a.m.GAE_JSF_JAR_FILES | 2.1.8, 2.0.14 |  | none, myfavoritejsflib-*.jar | When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for files (faces-config, facelets taglib or annotations) |
+| o.a.m.GAE_JSF_ANNOTATIONS_JAR_FILES | 2.1.8, 2.0.14 |  | none, myfavoritejsflib-*.jar | When the application runs inside Google Application Engine container (GAE), indicate which jar files should be scanned for annotations |
+| o.a.m.FLASH_SCOPE_DISABLED | 2.0.5 | false |  | Defines whether flash scope is disabled, preventing add the Flash cookie to the response |
+| o.a.m.STRICT_JSF_2_ORIGIN_HEADER_APP_PATH | 2.3.6 | false | true,false | This parameter specifies whether or not the Origin header app path should be checked |
+| o.a.m.ALWAYS_FORCE_SESSION_CREATION | 2.3.6 | true | true,false | Defines if a session should be created (if one does not exist) before response rendering |
+| o.a.m.LAZY_LOAD_CONFIG_OBJECTS | 2.0 | true |  | Indicate if the classes associated to components, converters, validators or behaviors should be loaded as soon as they are added to the current application instance or instead loaded in a lazy way |
+| o.a.m.VALIDATE | 2.0 | false | true, false | Validate if the managed beans and navigations rules are correct |
+| o.a.m.annotation.USE_CDI_FOR_ANNOTATION_SCANNING | 2.2.9 |  |  | Defines if CDI should be used for annotation scanning to improve the startup performance |
+| o.a.m.annotation.SCAN_PACKAGES | 2.0 |  |  | Servlet context init parameter which defines which packages to scan for beans, separated by commas |
+| o.a.m.config.annotation.LifecycleProvider | 1.1 |  |  | no description |
+| o.a.m.INITIALIZE_SKIP_JAR_FACES_CONFIG_SCAN | 2.2.10 | false | true, false | If the flag is true, the algoritm skip jar scanning for faces-config files to check if the current application requires FacesServlet to be added dynamically (servlet spec 3) |
+| o.a.m.DEFAULT_WINDOW_MODE | 2.2 | url |  | no description |
+| o.a.m.ERROR_TEMPLATE_RESOURCE | 1.2.4 | META-INF/rsc/myfaces-dev-error.xml |  | Indicate the template name used to render the default error page used by MyFaces specific  error handler implementation |
+| o.a.m.DEBUG_TEMPLATE_RESOURCE | 1.2.4 | META-INF/rsc/myfaces-dev-debug.xml |  | Indicate the template name used to render the default debug page (see ui:debug tag) |
+| o.a.m.ERROR_HANDLING | 1.2.4 | false, on Development Project stage: true | true,false | Indicate if myfaces is responsible to handle errors |
+| o.a.m.TEMPORAL_RESOURCEHANDLER_CACHE_ENABLED | 2.1.11 | false | true, false | If this param is set to true (default false), a temporal directory is created and all files handled by this ResourceLoader are cached there, avoiding the problem described on MYFACES-3586 |
+| o.a.m.SERVICE_PROVIDER_FINDER | 2.0.3 |  |  | Class name of a custom ServiceProviderFinder implementation. |
+| o.a.m.spi.InjectionProvider | 2.2 |  |  | no description |
+| o.a.m.MARK_INITIAL_STATE_WHEN_APPLY_BUILD_VIEW | 2.1 | false | true, false | no description |
+| o.a.m.WRAP_TAG_EXCEPTIONS_AS_CONTEXT_AWARE | 2.0.9, 2.1.3 | true | true, false | Wrap exception caused by calls to EL expressions, so information like the location, expression string and tag name can be retrieved by the ExceptionHandler implementation and used to output meaningful information about itself |
+| o.a.m.VIEW_POOL_MAX_POOL_SIZE |  | 5 |  | Defines the number of views to be hold per each view metadata definition |
+| o.a.m.VIEW_POOL_MAX_DYNAMIC_PARTIAL_LIMIT |  | 2 |  | Defines the limit of the views that cannot be reused partially |
+| o.a.m.VIEW_POOL_ENTRY_MODE |  | soft | weak,soft | Defines the type of memory reference that is used to hold the view into memory |
+| o.a.m.VIEW_POOL_DEFERRED_NAVIGATION |  | false | true, false | Defines if the view pool uses deferred navigation to recycle views when navigation is performed |
+| o.a.m.INITIALIZE_ALWAYS_STANDALONE | 2.0.3 | false |  | If this param is set to true, the check for faces servlet mapping is not done |
+| o.a.m.LOG_WEB_CONTEXT_PARAMS |  | auto | true, auto, false | Indicate if log all web config params should be done before initialize the webapp |
+| o.a.m.FACES_INITIALIZER | 2.0.1 |  |  | Class name of a custom FacesInitializer implementation. |
+| o.a.m.FACES_INIT_PLUGINS | 2.0 |  |  | comma delimited list of plugin classes which can be hooked into myfaces |
+| o.a.m.AUTOMATIC_EXTENSIONLESS_MAPPIN | 2.3 | false | true, false | This parameter enables automatic extensionless mapping for all JSF views |
+| o.a.m.STRICT_JSF_2_ORIGIN_HEADER_APP_PATH | 2.3 | false | true,false | This parameter specifies whether or not the Origin header app path should be checked |
+| o.a.m.ALWAYS_FORCE_SESSION_CREATION | 2.3.6 | true | true,false | Defines if a session should be created (if one does not exist) before response rendering |
+
+### Validation
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| jakarta.faces.VALIDATE_EMPTY_FIELDS | 2.0 | auto | auto, true, false | Force validation on empty fields (By default is auto, which means it is only enabled when Bean Validation binaries are available on the current classpath) |
+| jakarta.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL | 2.0 | false | true, false | Submitted values are decoded as null values instead empty strings |
+| o.a.m.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL_CLEAR_INPUT | 2.3.6 | false | true, false | When INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL is enabled, clear required input fields when empty strings are submitted on them. Note this param is only applicable when INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL is enabled |
+| jakarta.faces.DATETIMECONVERTER_DEFAULT_TIMEZONE_IS_SYSTEM_TIMEZONE | 2.0 | false | true, false | Set the default timezone as system timezone when a converter extending from DateTimeConverter is created |
+| o.a.m.ENUM_CONVERTER_ALLOW_STRING_PASSTROUGH | 2.0.1 | false | true,false | If value is a String instance and this param is true, pass it directly without try any change |
+| jakarta.faces.validator.DISABLE_DEFAULT_BEAN_VALIDATOR | 2.0 | true | true, false | If this init parameter is present, no Bean Validators should be added to an UIInput by default |
+| o.a.m.validator.BEAN_BEFORE_JSF_VALIDATION | 2.2.10 | false | true, false | Enforce f:validateBean to be called first before any JSF validator |
+| o.a.m.CLEAR_INPUT_WHEN_SUBMITTED_VALUE_IS_NULL_OR_EMPTY | 2.3.0 | true | true, false | When CLEAR_INPUT_WHEN_SUBMITTED_VALUE_IS_NULL_OR_EMPTY is enabled, input fields will be cleared when null or empty values are submitted |
+| jakarta.faces.ALWAYS_PERFORM_VALIDATION_WHEN_REQUIRED_IS_TRUE | 2.3 | false | true, false | If set to true, validation is always performed when required is true |
+| jakarta.faces.validator.ENABLE_VALIDATE_WHOLE_BEAN | 2.3 | false | true, false | Enable f:validateWholeBean use |
+
+### EL
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.CACHE_EL_EXPRESSIONS | 2.0.8 | noCache | noCache, strict, allowCset, always, alwaysRecompile | Indicates if expressions generated by facelets should be cached or not |
+| o.a.m.EXPRESSION_FACTORY | 1.2.7 |  |  | This parameter specifies the ExpressionFactory implementation to use |
+| o.a.m.SUPPORT_EL_3_IMPORT_HANDLER | 2.2.9 | false | true,false | This parameter specifies whether or not the ImportHandler will be supported |
+| o.a.m.EL_RESOLVER_COMPARATOR | 1.2.10, 2.0.2 |  |  | The Class of an Comparator&lt;ELResolver&gt; implementation. |
+| o.a.m.EL_RESOLVER_PREDICATE | 2.1.0 |  |  | The Class of an org.apache.commons.collections.Predicate&lt;ELResolver&gt; implementation.If used and returns true for a ELResolver instance, such resolver will not be installed in ELResolvers chain. Use with caution - can break functionality defined in JSF specification 'ELResolver Instances Provided by Faces' |
+| o.a.m.STRICT_JSF_2_CC_EL_RESOLVER | 2.0.10 | false | true, false | Change default getType() behavior for composite component EL resolver, from return null (see JSF 2_0 spec section 5_6_2_2) to use the metadata information added by composite:attribute, ensuring components working with chained EL expressions to find the right type when a getType() is called over the source EL expression |
+| o.a.m.SUPPORT_JSP_AND_FACES_EL | 2.0.13,2.1.7 | true | true,false | If set false, myfaces won't support JSP and jakarta.faces.el. JSP are deprecated in JSF 2.X, jakarta.faces.el in in JSF 1.2. Default value is true. |
+| o.a.m.SUPPORT_MANAGED_BEANS | 2.3 | true | true,false | If set false, myfaces won't support ManagedBeans anymore. ManagedBeans are deprecated in JSF 2.3, Default value is true. |
+
+### Render
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| o.a.m.WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG | 2.0.1 | false | true, false, on, off, yes, no | Wrap content inside script with xml comment to prevent old browsers to display it |
+| o.a.m.DEFAULT_RESPONSE_WRITER_CONTENT_TYPE_MODE | 2.0.11,2.1.5 | text/html | text/html, application/xhtml+xml | Define the default content type that the default ResponseWriter generates, when no match can be derived from HTTP Accept Header |
+| o.a.m.STRICT_XHTML_LINKS | 1.1.6 | true | true, false, on, off, yes, no | Use "&amp;amp;" entity instead a plain "&amp;" character within HTML |
+| o.a.m.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON | 1.2.3 | false | true, false, on, off, yes, no | This param renders the clear javascript on button necessary only for compatibility with hidden fields feature of myfaces |
+| o.a.m.RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS | 1.2.9 | false | true, false, on, off, yes, no | This param renders hidden fields at the end of h:form for link params when h:commandLink + f:param is used, instead use javascript to create them |
+| o.a.m.SAVE_FORM_SUBMIT_LINK_IE | 1.1 | false | true, false, on, off, yes, no | Add a code that save the form before submit using a link |
+| o.a.m.EARLY_FLUSH_ENABLED | 2.2.0 | false | true, false | Enable or disable an early flush which allows to send e.g. the HTML-Head to the client while the rest gets rendered. It's a well known technique to reduce the time for loading a page. |
+| o.a.m.RENDER_FORM_VIEW_STATE_AT_BEGIN | 2.2.4 | false | true,false | This param makes h:form component to render the view state and other hidden fields at the beginning of the form |
+| o.a.m.USE_MULTIPLE_JS_FILES_FOR_JSF_UNCOMPRESSED_JS | 2.0.1 | false | true,false | If this param is true and the project stage is development mode, the source javascript files will be loaded separately instead have all in just one file, to preserve line numbers and make javascript debugging of the default jsf javascript file more simple |
+| o.a.m.JSF_JS_MODE | 2.0.10,2.1.4 | normal | normal, minimal-modern, minimal | Define the mode used for jsf |
+
+### ViewHandler
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| jakarta.faces.DEFAULT_SUFFIX | 1.1 | .xhtml .view.xml .jsp |  | Indicate the default suffixes, separated by spaces to derive the default file URI  used by JSF to create views and render pages |
+| jakarta.faces.FACELETS_SUFFIX | 2.0 | .xhtml |  | The default extension used to handle facelets pages |
+| jakarta.faces.FACELETS_VIEW_MAPPINGS | 2.0 |  |  | Set of extensions handled by facelets, separated by ';' |
+| jakarta.faces.DISABLE_FACELET_JSF_VIEWHANDLER | 2.0 | false | true,false | Disable facelets VDL from the current application project |
+| o.a.m.VIEW_UNIQUE_IDS_CACHE_ENABLED | 2.0.13, 2.1.7 | true | true, false | Enable or disable a cache used to 'remember'  the generated facelets unique ids and reduce the impact over memory usage. |
+| o.a.m.COMPONENT_UNIQUE_IDS_CACHE_SIZE | 2.0.13, 2.1.7 | 100 |  | Set the size of the cache used to store strings generated using SectionUniqueIdCounter for component ids |
+| o.a.m.STRICT_JSF_2_VIEW_NOT_FOUND | 2.1.13 | false | true,false | If this param is set to true, a check will be done in Restore View Phase to check if the viewId exists or not and if it does not exists, a 404 response will be thrown |
+| o.a.m.STRICT_JSF_2_FACELETS_COMPATIBILITY | 2.2.0 | false | true,false | This param makes components like c:set, ui:param and templating components like ui:decorate, ui:composition and ui:include to behave like the ones provided originally in facelets 1_1_x |
+| o.a.m.CHECKED_VIEWID_CACHE_SIZE | 2.0.2 | 500 |  | Controls the size of the cache used to 'remember' if a view exists or not. |
+| o.a.m.CHECKED_VIEWID_CACHE_ENABLED | 2.0.2 | true | true, false | Enable or disable a cache used to 'remember' if a view exists or not and reduce the impact of sucesive calls to ExternalContext.getResource(). |
+| o.a.m.JSP_SUFFIX |2.3 | .jsp | | |
+
+###  Resources
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| jakarta.faces.RESOURCE_EXCLUDES | 2.0 | .class .jsp .jspx .properties .xhtml .groovy |  | Space separated file extensions that will not be served by the default ResourceHandler implementation |
+| o.a.m.RESOURCE_MAX_TIME_EXPIRES | 2.0 | 604800000 |  | Set the max time in miliseconds set on the "Expires" header for a resource rendered by the default ResourceHandler |
+| o.a.m.RESOURCE_HANDLER_CACHE_SIZE | 2.0.2 | 500 |  | Controls the size of the cache used to check if a resource exists or not |
+| o.a.m.RESOURCE_HANDLER_CACHE_ENABLED | 2.0.2 | true | true,false | Enable or disable the cache used to "remember" if a resource handled by the default ResourceHandler exists or not |
+| o.a.m.STRICT_JSF_2_ALLOW_SLASH_LIBRARY_NAME | 2.1.6, 2.0.12 | false | true, false | Allow slash in the library name of a Resource |
+| o.a.m.RESOURCE_BUFFER_SIZE | 2.1.10, 2.0.16 | 2048 |  | Define the default buffer size that is used between Resource |
+
+
+### State
+
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| jakarta.faces.STATE_SAVING_METHOD | 1.1 | server | server,client | Define the state method to be used. There are two different options defined by the specification: 'client' and 'server' state. |
+| jakarta.faces.FULL_STATE_SAVING_VIEW_IDS | 2.0 |  |  | Indicate the viewId(s) separated by commas that should be saved and restored fully, without use Partial State Saving (PSS) |
+| jakarta.faces.PARTIAL_STATE_SAVING | 2.0 | true (false with 1.2 webapps) | true,false | Enable or disable partial state saving algorithm |
+| jakarta.faces.SERIALIZE_SERVER_STATE | 2.2 | false | true,false | Indicate if the state should be serialized before save it on the session |
+| o.a.m.USE_ENCRYPTION | 1.1 | true | true,false | Indicate if the view state is encrypted or not |
+| o.a.m.SECRET | 1.1 |  |  | Defines the secret (Base64 encoded) used to initialize the secret key for encryption algorithm |
+| o.a.m.ALGORITHM | 1.1 | DES |  | Indicate the encryption algorithm used for encrypt the view state |
+| o.a.m.SECRET.CACHE | 1.1 |  |  | If is set to "false", the secret key used for encryption algorithm is not cached |
+| o.a.m.ALGORITHM.IV | 1.1 |  |  | Defines the initialization vector (Base64 encoded) used for the encryption algorithm |
+| o.a.m.ALGORITHM.PARAMETERS | 1.1 | ECB/PKCS5Padding |  | Defines the default mode and padding used for the encryption algorithm |
+| o.a.m.SERIAL_FACTORY | 1.1 |  |  | Defines the factory class name using for serialize/deserialize the view state returned by state manager into a byte array |
+| o.a.m.COMPRESS_STATE_IN_CLIENT | 1.1 | false | true,false | Indicate if the view state should be compressed before encrypted(optional) and encoded |
+| o.a.m.MAC_ALGORITHM |  | HmacSHA1 |  | Indicate the algorithm used to calculate the Message Authentication Code that is added to the view state |
+| o.a.m.MAC_SECRET |  |  |  | Define the initialization code that are used to initialize the secret key used on the Message Authentication Code algorithm |
+| o.a.m.MAC_SECRET.CACHE |  |  |  | If is set to "false", the secret key used for MAC algorithm is not cached |
+| o.a.m.CLIENT_VIEW_STATE_TIMEOUT | 2.1.9, 2.0.15 | 0 |  | Define the time in minutes where the view state is valid when client side state saving is used |
+| o.a.m.COMPRESS_STATE_IN_SESSION | 1.1 | true | true,false | Indicates that the serialized state will be compressed before it is written to the session |
+| o.a.m.USE_FLASH_SCOPE_PURGE_VIEWS_IN_SESSION | 2.0.6 | false | true, false | Allow use flash scope to keep track of the views used in session and the previous ones, so server side state saving can delete old views even if POST-REDIRECT-GET pattern is used |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN | 2.1.9, 2.0.15 | none | secureRandom, random, none | Adds a random key to the generated view state session token |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_LENGTH | 2.1.9, 2.0.15 | 8 |  | Set the default length of the random key added to the view state session token |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_CLASS | 2.1.9, 2.0.15 |  |  | Sets the random class to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_PROVIDER | 2.1.9, 2.0.15 |  |  | Sets the random provider to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_VIEW_STATE_SESSION_TOKEN_SECURE_RANDOM_ALGORITM | 2.1.9, 2.0.15 | SHA1PRNG |  | Sets the random algorithm to initialize the secure random id generator |
+| o.a.m.CHECK_ID_PRODUCTION_MODE | 2.0.12, 2.1.6 | auto | true, auto, false | Define how duplicate ids are checked when ProjectStage is Production, by default (auto) it only check ids of components that does not encapsulate markup (like facelets UILeaf) |
+| o.a.m.REFRESH_TRANSIENT_BUILD_ON_PSS | 2.0 | auto | true,false,auto | Indicate if the facelet associated to the view should be reapplied when the view is refreshed |
+| o.a.m.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE | 2.0 | false | true, false, on, off, yes, no | Enable or disable a special mode that enable full state for parent components containing c:if, c:forEach,  c:choose and ui:include with src=ELExpression |
+| o.a.m.RENDER_VIEWSTATE_ID | 1.1 | true | true, false, on, off, yes, no | define if the input field that should store the state (jakarta.faces.ViewState) should render id="jakarta.faces.ViewState". |
+| o.a.m.NUMBER_OF_VIEWS_IN_SESSION | 1.1 | 20 |  | Defines the amount (default = 20) of the latest views are stored in session |
+| o.a.m.NUMBER_OF_SEQUENTIAL_VIEWS_IN_SESSION | 2.0.6 | 4 |  | Indicates the amount of views (default is not active) that should be stored in session between sequential POST or POST-REDIRECT-GET if org |
+| o.a.m.NUMBER_OF_FLASH_TOKENS_IN_SESSION | 2.2.6 |  |  | Indicate the max number of flash tokens stored into session |
+| o.a.m.FACES_FLOW_CLIENT_WINDOW_IDS_IN_SESSION | 2.2.6 |  |  | Indicate the max number of client window ids stored into session by faces flow |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN | 2.2.0 | none | secureRandom, random | Defines how to generate the csrf session token |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_LENGTH | 2.2.0 | 16 |  | Set the default length of the random key used for the csrf session token |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_CLASS | 2.2.0 |  |  | Sets the random class to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_PROVIDER | 2.2.0 |  |  | Sets the random provider to initialize the secure random id generator |
+| o.a.m.RANDOM_KEY_IN_CSRF_SESSION_TOKEN_SECURE_RANDOM_ALGORITM | 2.2.0 | SHA1PRNG |  | Sets the random algorithm to initialize the secure random id generator |
+| o.a.m.AUTOCOMPLETE_OFF_VIEW_STATE | 2.2.8, 2.1.18, 2.3.6 | true | true, false | Add autocomplete="off" to the view state hidden field |
+
+### Deprecated
+| Name | Since | Default value | Expected values | Description |
+| ---- | ---- | ---- | ---- | ---- |
+| facelets.BUFFER_SIZE | 2.0 |  |  | Define the default buffer size value passed to ExternalContext |
+| facelets.REFRESH_PERIOD | 2.0 | -1 |  | Define the period used to refresh the facelet abstract syntax tree from the view definition file |
+| facelets.RESOURCE_RESOLVER | 2.0 |  |  | Class implementing ResourceResolver interface used to locate facelet resources |
+| facelets.DECORATORS | 2.0 |  |  | Set of class names, separated by ';', implementing TagDecorator interface, used to transform a view definition in a facelet abstract syntax tree, that is used later to generate a component tree |
+| facelets.SKIP_COMMENTS | 2.0 |  |  | Skip comments found on a facelet file |
+| facelets.LIBRARIES | 2.0 |  |  | Set of .taglib.xml files, separated by ';' that should be loaded by facelet engine. |
+| o.a.m.SERIALIZE_STATE_IN_SESSION | 1.1 | false | true,false | Indicate if the state should be serialized before save it on the session. Use jakarta.faces.SERIALIZE_SERVER_STATE. |
+
+## Integration / SPI
+
+> :warning: **usually common users of MyFaces Core does not need to deal with these specific stuff, because the application/web server could already provide the necessary hooks or integration modules "out of the box"**
+
+MyFaces core provides some "points of integration" that can be used by application and web servers to override or add some specific code.
+For example, JBoss AS provides a custom virtual file system (VFS), and MyFaces core needs to scan for faces-config.xml files, so it is necessary to provide some code that uses JBoss VFS to locate faces-config.xml files to be parsed later.
+
+Some features uses Service Provider Interface (SPI) pattern, so take a look at java.util.ServiceLoader description in java 6 api to get the idea how it works.
+
+Below there is a table of the "points of integration" used by application and web servers:
+
+| Integration Point                                                          | Classes Involved                                                   | Description                                                                                                                                                                                                                                                                                                                                              [...]
+|----------------------------------------------------------------------------|--------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [...]
+| @PostConstruct and @PreDestroy injection over jsf managed beans            | org.apache.myfaces.config.annotation.LifecycleProvider2   org.apache.myfaces.config.annotation.LifecycleProviderFactory            | Provide methods to delegate injection of @PostConstruct and @PreDestroy annotations to the server for custom processing.                                                                                                                                                                 [...]
+| Override SPI handling                                                      | org.apache.myfaces.spi.ServiceProviderFinder  <br/> org.apache.myfaces.spi.ServiceProviderFinderFactory  | Override SPI handling done by MyFaces Core, usually taking advantage of container specific features to scan files inside jars.                                                                                                                                                                                     [...]
+| Annotation Scanning                                                        | org.apache.myfaces.spi.AnnotationProvider <br/> org.apache.myfaces.spi.AnnotationProviderWrapper <br/> org.apache.myfaces.spi.AnnotationProviderFactory | Override/wrap myfaces annotation scanning algorithm that needs to be processed at startup.                                                                                                                                                                          [...]
+| Locate facelet .taglib.xml files through classpath.                        | org.apache.myfaces.spi.FaceletConfigResourceProvider <br/> org.apache.myfaces.spi.FaceletConfigResourceProviderFactory             | Locate facelet .taglib.xml files through classpath. These files has definitions that are used by facelets algorithm to parse view files.                                                                                                                                                 [...]
+| Locate faces-config.xml files through classpath.                           | org.apache.myfaces.spi.FacesConfigResourceProvider <br/>  org.apache.myfaces.spi.FacesConfigResourceProviderFactory               | Locate faces-config xml files through classpath. These files has definitions that are used by initialize jsf environment. By default it locate all files inside META-INF folder, named faces-config.xml or ending with .faces-config.xml                                                  [...]
+| Get an unified configuration after sort and order all config files.        | org.apache.myfaces.spi.FacesConfigurationMerger <br/> org.apache.myfaces.spi.FacesConfigurationMergerFactory <br/> org.apache.myfaces.config.element.*   | Get all org.apache.myfaces.config.element.FacesConfig data  and then it combines it into one org.apache.myfaces.config.element.FacesConfigData instance.                                                                                                           [...]
+| Get configuration information from different sources and allow cache them. | org.apache.myfaces.spi.FacesConfigurationProvider <br/> org.apache.myfaces.spi.FacesConfigurationProviderFactory <br/> org.apache.myfaces.config.element.*                 | This interface provide a way to merge and store all JSF config information retrieved from faces-config.xml files, META-INF/service files and annotations that works as base point to initialize MyFaces. The objective is allow server container [...]
+| Override javax.faces.FactoryFinder default algorithm                       | org.apache.myfaces.spi.FactoryFinderProvider <br/> org.apache.myfaces.spi.FactoryFinderProviderFactory                  | Provide an interface to override javax.faces.FactoryFinder class methods. This is useful if containers does not want to use Thread Context Class Loader to load classes, like in OSGi.                                                                                                              [...]
+| Provide additional info from web.xml files                                 | org.apache.myfaces.spi.WebConfigProvider <br/>  org.apache.myfaces.spi.WebConfigProviderFactory   org.apache.myfaces.spi.ServletMapping                     | Provide additional info from web.xml files, like mapping or if an error page is present.                                                                                                                                                                        [...]
+| Override initialization and destroy web applications                       | org.apache.myfaces.webapp.FacesInitializer <br/> org.apache.myfaces.webapp.FacesInitializerFactory                      | Allow customize initialization / destroy operations or provide an alternate MyFaces initializer to a specific container.                                                                                                                                                                            [...]
+| Scan for annotated Flows and manage Flow scope                             | org.apache.myfaces.spi.FacesFlowProvider <br/> org.apache.myfaces.spi.FacesFlowProviderFactory                         | In this interface @FlowDefinition annotation is scanned for flows defined programatically and it is also managed the flow scope logic. By default MyFaces provides two implementations, one using CDI and one without CDI (that only manages flow scope)                                             [...]
+| Manage View scope                                                          | org.apache.myfaces.spi.ViewScopeProvider <br/> org.apache.myfaces.spi.ViewScopeProviderFactory                          | This interface manage the logic to plug the view scope with JSF. It has some methods to handle view scope destroy or session destroy                                                                                                                                                                [...]
+| Scan for available contracts                                               | org.apache.myfaces.spi.ResourceLibraryContractsProvider <br/> org.apache.myfaces.spi.ResourceLibraryContractsProviderFactory           | Provides an interface to scan for the available resource library contracts in the current environment. By default it scans using external context getResource(...) methods and in the classpath according to JSF spec.                                                               [...]
+
+
+
+
+
+
+
+
diff --git a/coreConceptsCacheElExpressions.md b/coreConceptsCacheElExpressions.md
new file mode 100644
index 0000000..cf1aed3
--- /dev/null
+++ b/coreConceptsCacheElExpressions.md
@@ -0,0 +1,76 @@
+# Apache MyFaces Core Concepts - Cache EL Expressions
+
+Since MyFaces Core 2.0.8 / 2.1.2, a new optimization was added to prevent create EL Expressions unnecessarily.
+Each time a page is build, facelets compiler create all EL expressions, and then evaluate them, so with this special configuration, you can reduce the time and memory resources required to build a view.  
+Just add this to your web.xml file:
+
+```xml
+<context-param>
+    <param-name>org.apache.myfaces.CACHE_EL_EXPRESSIONS</param-name>
+    <param-value>always</param-value>
+</context-param>
+```
+
+There are the following valid modes for this param:
+* `noCache`: All expression are created each time the view is built.
+* `always`: Only does not cache when expressions are inside user tags or the expression contains a variable resolved using VariableMapper.
+* `allowCset`: Like "always", but does not allow cache when ui:param was used on the current template context.
+* `strict`: Like "allowCset", but does not allow cache when c:set with var and value properties only is used on the current page context. Any usage of c:if and ui:param will prevent cache inner EL expressions. 
+* `alwaysRecompile` (recommended, since 2.1.12): When the algorithm detects a new user tag attribute or parameter, it recompiles the facelet again and mark the expressions that should not be cached, solving the problem related with ui:param or user tag attributes detected previously with `always` mode. Related issue in JIRA is MYFACES-3711
+
+To enable this optimization, you should check first some tips to see which option can be enabled in your application.
+
+
+
+## Downside `always`
+a.xhtml
+```xml
+<ui:composition template="c.xhtml">
+    <ui:param name="var1" value="value1"/>
+</ui:composition>
+```
+
+b.xhtml
+```xml
+<ui:composition template="c.xhtml">
+    <ui:param name="var1" value="value1"/>
+    <ui:param name="var2" value="value2"/>
+</ui:composition>
+```
+
+c.xhtml
+```xml
+<ui:composition>
+   <h:outputText value="#{var1}/>
+   <h:outputText value="#{var2}/>
+</ui:composition>
+```
+If a.xhtml view is constructed before b.xhtml, #{var2} will be cached, even if this is not wanted and then when b.xhtml is called, the expression will not work correctly.
+
+So the first tip to use this param is check if your composition declarations (ui:include, ui:decorate, ui:composition) always use the same number of params.
+
+
+## Downside `allowCset` / `always`
+csetuse.xhtml
+```xml
+<c:if test="....">
+    <c:set var="attribute1" value="somevalue" />
+</c:if>
+
+<!-- some use of attribute1 -->
+```
+
+The problem here consists in a ValueExpression is created conditionally, but if the ValueExpression is not created the first time, other value expressions will not be marked as cacheable.
+The solution is use this syntax instead:
+
+csetuse.xhtml
+```xml
+<c:set var="attribute1" value="#{somecondition ? 'somevalue' : null}"/>
+```
+
+In this way, any use of attribute1 will detect and handle the expression correctly.
+
+In `strict` mode, any usage of the previous two tags (c:if and ui:param) will prevent cache inner EL expressions. The mode "noCache" (by default) will always recreate expressions each time the view is build.
+
+Related issue MYFACES-3160
+
diff --git a/coreConceptsELResolverOrdering.md b/coreConceptsELResolverOrdering.md
new file mode 100644
index 0000000..e317268
--- /dev/null
+++ b/coreConceptsELResolverOrdering.md
@@ -0,0 +1,46 @@
+# Apache MyFaces Core Concepts - ELResolver ordering
+As with MyFaces core 2.0.2 (or 1.2.10) it is possible to change the predefined order or ELResolvers.
+Standard order defined in the JSF 2.0 spec
+* faces.ImplicitObjectELResolverForFaces
+* faces.CompositeComponentAttributesELResolver
+* el.CompositeELResolver (ELResolvers from faces-config and Application.addELResolver())
+* faces.ManagedBeanELResolver
+* faces.ResourceELResolver
+* el.ResourceBundleELResolver
+* faces.ResourceBundleELResolver
+* el.MapELResolver
+* el.ListELResolver
+* el.ArrayELResolver
+* el.BeanELResolver
+* faces.ScopedAttributeELResolver
+
+This order works great in every case, but is not always the fastest one, e.g. if you are using CDI,
+because the CDI-ELResolver will be called many times for the most trivial ELExpressions, because he is installed via the faces-config and thus comes pretty early.
+
+#### Changing the order
+To change this predefined order you can provide a java.util.Comparator<ELResolver> implementation which will be applied to the List of ELResolvers mentioned above.
+To install the comparator you simply have to set a web.xml config parameter:
+```xml
+<context-param>
+    <param-name>org.apache.myfaces.EL_RESOLVER_COMPARATOR</param-name>
+    <param-value>com.acme.el.MyELResolverComparator</param-value>
+</context-param>
+```
+
+### Default implementations shipping with MyFaces core
+
+MyFaces core already provides three implementations of java.util.Comparator<ELResolver>.
+* `org.apache.myfaces.el.unified.OpenWebBeansELResolverComparator`: optimized for Apache OpenWebBeans
+* `org.apache.myfaces.el.unified.CustomFirstELResolverComparator`: puts your custom ELResolvers to the first place
+* `org.apache.myfaces.el.unified.CustomLastELResolverComparator`: puts your custom ELResolvers to the last place
+
+To optimize the marriage of MyFaces and OpenWebBeans, you simply have to set the following config parameter:
+```xml
+<context-param>
+    <param-name>org.apache.myfaces.EL_RESOLVER_COMPARATOR</param-name>
+    <param-value>org.apache.myfaces.el.unified.OpenWebBeansELResolverComparator</param-value>
+</context-param>
+```
+
+This moves the WebBeansELResolver almost to the last place in the ELResolver chain, thus improving the overall performance of ELExpression evaluations.
+
diff --git a/coreConceptsImmediateAttribute.md b/coreConceptsImmediateAttribute.md
new file mode 100644
index 0000000..975bd1e
--- /dev/null
+++ b/coreConceptsImmediateAttribute.md
@@ -0,0 +1,130 @@
+# Apache MyFaces Core Concepts - Immediate Attribute
+
+How the immediate attribute works?
+
+## Purpose
+The immediate attribute can be used to achieve the following effects:
+* Allow a commandLink or commandButton to navigate the user to another page without processing any data currently in input fields of the current screen. In particular, this allows navigation to occur even when there are currently validation errors. A "cancel" button typically falls into this category.
+* Allow a commandLink or commandButton to trigger back-end logic while ignoring validation for some of the fields on the screen. This is a more general version of the item above.
+* Make one or more input components "high priority" for validation, so that if any of these are invalid then validation is not performed for any "low-priority" input components in the same page. This can reduce the number of error messages shown.
+
+## Overview
+Before we can discuss immediate, we first need to review the JSF request processing lifecycle.
+* Restore View - Creates or restores the previous page.
+* Apply Request Values - Set component submitted values to request values.
+* Process Validations - Convert and validate component values. Set component values to submitted values if valid.
+* Update Model Values - Set backing bean values to component values.
+* Invoke Application - Execute actionListeners and actions.
+* Render Response - Return response.
+
+Many developers are under the impression that using the immediate flag on a component skips the "Process Validations" phase.
+It doesn't. What using immediate does is cause a component to be processed in the Apply Request Values phase.
+
+## UIInput Components
+Using immediate means the component value will be validated during apply-request-values, ie before any non-immediate component values (which validate in process-validations).
+Any validation error in the set of input components that are marked immediate will cause processing to move to the render phase after the apply-request-values phase is complete,
+meaning that if any immediate component fails validation then errors associated with non-immediate components will not be shown.
+In addition, if the new value of an immediate input component is different from the existing value specified by the value attribute then a ValueChangeEvent is raised (as normal),
+but this event is processed at the end of the !ApplyRequestValues phase, NOT at the end of the ProcessValidations phase.
+In particular, this means that any ValueChangeListener associated with the component will execute before any immediate UICommand component's ActionListener (assuming the command component occurs later in the page).
+
+Marking an input component as immediate does NOT affect the model update; any new data is still pushed into the model at the Update Model phase (ie after any immediate command components have executed).
+Note, however, that the !ValueChangeListener could be used to update the model directly.
+
+## UICommand Components
+Using immediate means the component value will be validated during apply-request-values, ie before any non-immediate component values (which validate in process-validations).
+Any validation error in the set of input components that are marked immediate will cause processing to move to the render phase after the apply-request-values phase is complete,
+meaning that if any immediate component fails validation then errors associated with non-immediate components will not be shown.
+In addition, if the new value of an immediate input component is different from the existing value specified by the value attribute then a ValueChangeEvent is raised (as normal),
+but this event is processed at the end of the !ApplyRequestValues phase, NOT at the end of the ProcessValidations phase.
+In particular, this means that any ValueChangeListener associated with the component will execute before any immediate UICommand component's ActionListener (assuming the command component occurs later in the page).
+
+Marking an input component as immediate does NOT affect the model update; any new data is still pushed into the model at the Update Model phase (ie after any immediate command components have executed).
+Note, however, that the !ValueChangeListener could be used to update the model directly.
+UICommand Components
+
+Using immediate causes the component ActionListener or action-method to be executed at the end of the apply-request-values phase,
+ie before any non-immediate value validation and before any backing bean updates (update-model phase).
+
+If the action method is of a form that returns a navigation string, then:
+* Any non-null string will cause the lifecycle to proceed directly to the render-response phase, meaning that validation of any non-immediate input components never occurs. This is why an immediate command component is a natural way to implement "cancel" operations; it works even when there are input fields in the page that would fail validation. Of course as a result, there is never any update-model phase, ie data entered by the user is discarded.
+* A null return value causes processing to continue as normal, ie non-immediate components are validated then update-model is executed (if no validation errors occurred).
+
+For an action listener method that returns void, it is necessary to call
+`facesContext.renderResponse();`
+if the normal flow is not desired.
+
+The most significant issue when using an immediate input component is that new input data entered by the user is not usually available from the model as the update-model phase has not yet executed.
+
+For non-immediate input components in the page, the only way an action method for an immediate command component can access user input data is by using component-binding
+or lookup-by-name to retrieve a specific UIComponent object then calling getSubmittedValue() to obtain the raw string provided by the user.
+This value has not been converted to its target type (using a user-specified or default Converter), nor has it been validated.
+
+For immediate input components, the conversion and validation steps have been executed; using the corresponding UIComponent it is possible to get the converted value.
+Alternatively, if the component is "before" the UICommand component in the page, and has a !ValueChangeListener attached then that will have executed so
+any side-effects of that method (including direct update of a backing bean) can be relied upon to be available.
+Note, however, that if the component fails validation then no backing bean update will have been performed.
+
+Warning: if the action method updates the model but does not perform navigation then any change to a backing bean value will be overwritten when the input component value goes through validation and update model.
+
+Any immediate input components on the page that fail their validation will NOT stop immediate command components from executing; this is quite different from the behaviour for non-immediate input and command components.
+
+
+## Limitations
+Using immediate for anything other than the trivial case of a cancel button is problematic.
+
+### Solution 1
+First mark the relevant command component as immediate, then for each input component that the associated action method needs to implement:
+* mark the input component as immediate
+* add a valueChangeListener attribute
+
+```xml
+<h:inputText value="#{pageBean.foo}" immediate="true" valueChangeListener="#{pageBean.setFoo}"/>
+```
+
+The referenced method looks like this:
+```java
+// normal property setter
+public void setFoo(String val) {...}
+
+// immediate input hack: update model at apply-request, not update-model
+public void setFoo(ValueChangeEvent ev) {
+  setFoo((String) ev.getNewValue());
+  // prevent setter being called again during update-model phase
+  ((UIInput) ev.getComponent()).setLocalValueSet(false);
+}
+```
+
+This effectively moves the update-model behaviour for the modified input component from the update-model phase into the apply-request-values phase.
+An immediate button can then access these values just like a non-immediate button accesses its inputs - except that the action listener method does need to manually check whether the validation failed for this component (in which case the ValueChangeListener never runs).
+
+In the case where the input component's validation does fail, and the (immediate) action listener does not force navigation then the page will be redisplayed with only the immediate validation errors (not errors from any non-immediate components); this may be exactly what is wanted.
+
+
+### Solution 2
+Have the action method invoked by the component access the raw components. However:
+* You will not have access to converted or validated component values on non-immediate components.
+* You will not have access to updated backing beans. You cannot change the values for non-immediate components (except by changing the raw submitted values).
+* The Update model phase may not be executed.
+* Backing beans that non-immediate components reference might or might not be updated.
+
+### Solution 3
+Don't make the command immediate at all; instead make the validation check whether it should run or not (see also the link below to the Optional Validation Framework).
+
+For example, if the problem is a required field, then do something like this (untested code!):
+
+In the page:
+```xml
+<h:inputText required="#{!pageBean.cancelling}"/>
+```
+
+In the bean:
+```java
+public boolean isCancelling() {
+    // assumes cancelButton is a component binding  
+    FacesContext fc = FacesContext.getCurrentInstance();
+    Map reqParams = fc.getExternalContext().getRequestParameterMap();
+    return reqParams.containsKey(cancelButton.getClientId());
+}
+```
+
diff --git a/coreConceptsViewPooling.md b/coreConceptsViewPooling.md
new file mode 100644
index 0000000..ccb1b4e
--- /dev/null
+++ b/coreConceptsViewPooling.md
@@ -0,0 +1,135 @@
+# Apache MyFaces Core Concepts - View Pooling
+
+The idea of the view pool comes from ideas of the community about how to improve JSF performance and the speculation behind how the state affects performance in web frameworks.
+The primary perception was that a stateful web framework by definition does not have a good performance and a stateless web framework can be faster,
+because a stateful web framework needs to deal with the "state" problem and that logic can expensive according to how it is implemented.  
+  
+But that way to see the problem is completely wrong, because in practice there are other things that can affect performance more significantly and with a good design it is possible to improve things to a very good level.
+Proof of that is with the introduction of JSF 2.0 Partial State Saving (PSS), the perception changed,
+because it was demonstrated that it is possible to reduce the state size used by the views of an application.  
+  
+In JSF 2.2 another step forward has been done with the introduction of "stateless JSF".
+The idea is just mark the views in the application that does not require state to work properly, and then skip the state saving and restoring algorithm to improve performance.
+It works for Mojarra but it doesn't have any effect with MyFaces because its PSS algorithm has been carefully designed and improved over a long time, and it is very efficient at the time of restore and save the state.
+
+If the state is not the problem, or in other words, if the state calculation does not have a significant impact over performance, which one is the real problem? is there any problem?
+The evidence gathered suggest there is not any problem, and the proof is that an application using MyFaces is very near in terms of performance than the same application written with hardcoded Servlets and JSP.
+
+Why the solution using Servlets and JSP is the fastest one? There are two fundamental reasons:
+* Everything should be written by hand, so there is no abstraction layer and in that way there is no overhead imposed by that layer.
+* It uses the minimum possible amount of memory.
+
+Please remember JSP pages are compiled into a servlet. The servlet creates a JSP tag tree and then this tree is processed. The result is most of the objects used by JSP are static constants.
+Technically nothing will be as fast as Servlet/JSP. But the objective is not be the fastest framework. Instead, the objective is be as fast as possible without sacrifice the abstraction layer that provides JSF.
+
+From other point of view, some tests done long time ago about JSF lifecycle and its performance in MyFaces suggest the following conclusions:
+* Render the response involves about 70% of the processing time used by JSF.
+* Build the view involves about 15%-20% of the processing time used by JSF.
+* The time spent in traverse the component tree is a lot less than the time spent rendering the response or building the view.
+* In ajax request, the relative time spent building the view can have more weight over the overall response time according to the size of the component tree and the operations involved in process the response.
+
+According to the previous analysis, it is possible to improve the way how views are built to get better response times. There are some options:
+* Use "static" views, or in other words, stateless views that can be used across multiple threads concurrently.
+* Find a way to reuse the views.
+
+The first option is not a good solution, because anyway there is some information that is inside UIComponent and should be stored per thread, and precisely UIComponent is a place specifically designed to store that information.
+In fact, the first option is not really an option and it was discarded after some attempts.
+
+## A new way to reuse views
+
+Build a view can be described as a repetitive calculation. Many components are created and assembled in a predictable way with attributes that most of them are defined to their associated templates or facelets.
+
+In JSF 2.0, PSS algorithm takes advantage of that predictable behavior and make a distinction between the "initial state" and the "delta state".
+In this way, a view is a composition of the initial state and its delta state. But in the same way, if it is substracted the delta from the current state, the result is the initial state.
+So, if we can somehow "substract" or "reset" the delta from the current state, we could derive a view into its initial state in the same way as a view is created from scratch.
+
+In other words, we are taking advantage of the current JSF spec and we are taking it to the next level. PSS algorithm can be used to check if a view has been modified or not, checking its state.
+That information can help us to decide if a component is reusable (no state) or not (with state).
+If the component has state, the idea is reset the state and get it back to the initial state defined by the first call of markInitialState().
+
+This can be done quite easily adding a context attribute `oam.view.resetSaveStateMode` and checking the value of that attribute and take proper actions into saveState() method.
+here are two modes: soft reset [1] and hard reset [2]. A soft reset clears the "transient" state or those internal attributes used by the component but it does not clear the "delta" state.
+A hard reset destroy both the "transient" state and the "delta" state. If the component cannot be reset, saveState() should return a non null value.
+
+If a component in a view cannot be reset fully, it is possible to just remove the component from the tree and use facelets refreshing algorithm to rebuild the missing part and reuse a view partially.
+
+But according to the spec, create a full view involves the following steps:
+* Call `vdl.createMetadataView(...)` and call internally `ViewHandler.createView(...)` or just call `ViewHandler.createView(...)`
+* Call `vdl.buildView(...)`
+
+In the case of UIViewRoot, we can just take a "snapshot" of the component and exclude it from the reuse step. So the view pool does not reuse the root node but all the children, excluding the content of f:metadata facet.
+
+There exists 4 fundamental attributes that define a view in JSF:
+* viewId
+* locale
+* renderKitId
+* contracts
+
+This means if a view has the same values for the previous attributes, we can consider the structure is the same and the view can be reused partially or fully.
+The pool uses these attributes as a key to group similar views, so there are different sets of views according to these values.
+
+But a view can have a different structure too if it is used one of the following facelets tags.
+
+According to its dynamic behavior, views can be classified into two groups: "static structure views" and "dynamic structure views".
+This distinction is important because dynamic structure views requires a special treatement.
+
+There are two basic operation that any pool must do: create objects and store them in the pool and take the objects from the pool.
+In the JSF lifecycle, there are the following points where the pool must take some action:
+* At the first request, the view and the view metadata are created on restore view phase. Later, the view is filled when vdl.buildView(...) is called on render response phase. In this moment the algorithm can take a view from the pool. Here there are three cases:
+ * If the view is partial it requires to be refreshed by the vdl to restore the missing parts.
+ * If the view is complete but dynamic, since we don't know how the dynamic portion of the view can change, it falls in the same case as a partial view and it should be refreshed by the vdl.
+ * If the view is complete but static, the view is ready to use.
+* If the view does not require state saving (does not contains h:form instances), after the view is rendered we can do a hard reset over the view and store it into the pool. In other words, we just discard the transient and delta state from the view, calling vdl.saveState(...). In a strict sense, in vdl.saveState(...) under hard reset mode, no state is saved but the view is stored into the pool.
+* If the view requires state saving, the algorithm will call StateManager.saveState(...) and in that way vdl.saveState(...) . In this point the algorithm saves the delta state, reset the view and store it into the pool.
+* In a postback, when the view is restored (StateManagementStrategy.restoreView), we can try to extract the dynamic portion of the view from the state. If there is no dynamic state, the view is static and the inner call of vdl.buildView will take it from the pool. If there is dynamic state, we can take a dynamic view from the pool using the dynamic state.
+* When there is a navigation, there is a way to store the view that is left behind into the pool. The idea is change the default ActionListenerImpl and ensure handleNavigation() is called before the end of the current phase, or in other words doing a "deferred navigation". This is necessary to ensure the view is in a stable state, because the ActionListener is activated while the tree is traversed. By default this behavior is disabled.
+
+## Configuration
+
+The pool has the following web config parameters:
+* `org.apache.myfaces.VIEW_POOL_MAX_POOL_SIZE` : Indicates the number of views stored in the pool per key.
+* `org.apache.myfaces.VIEW_POOL_MAX_DYNAMIC_PARTIAL_LIMIT` : Indicates the number of dynamic views that can be reused as partial views.
+* `org.apache.myfaces.VIEW_POOL_ENTRY_MODE` : Indicates how the view is hold by a "soft" or a "weak" reference into the pool. It affects how GC collects the views.
+* `org.apache.myfaces.VIEW_POOL_DEFERRED_NAVIGATION` : reuse views that are navigated using default algorithm (increase reusal but it uses a hack that does not follow jsf spec) ).
+
+There are two ways to enable a view to be used by the view pool:
+
+Add an entry into a faces-config.xml file like this (with this mode you can override the global web config parameters):
+```xml
+<faces-config-extension>
+    <view-pool-mapping>
+        <url-pattern>/*</url-pattern>
+        <parameter>
+            <name>org.apache.myfaces.VIEW_POOL_MAX_POOL_SIZE</name>
+            <value>5</value>
+        </parameter>
+    </view-pool-mapping>
+</faces-config-extension>
+```
+
+Or encapsulate your top level page with:
+```xml
+<f:view oamEnableViewPool=true>
+```
+
+> :warning: **If the view is marked as "transient" or stateless and poolable at the same time the view pool will disabled, because the view pool reuse the state saving algorithm.**
+
+## Final Thoughts and Conclusions
+
+The disadvantages of the view pooling technique are:
+* All components used in a view that uses view pooling must be compatible with the technique. The reason is some components has some variables that are not part of the state, but plays an important role. For example, in UIData there is a variable used to hold the dataModel and if a reset is required, the model must be cleared. In other cases, since all state is contained in the inner StateHelper instance provided by MyFaces implementation through UIComponentBase, there is no need to do a [...]
+* The view pool uses state saving algorithm to decide if a view is reusable or not, but this detection technique is not 100% failsafe if the component is not compatible.
+* Listeners subscribed using a facelet tag handler that invokes UIViewRoot.subscribeToViewEvent(...) may not work as expected, because the tag handler is not executed at each request, and these listeners are not saved/restored with the view state and needs to be subscribed at each request.
+
+The following improvements has been confirmed after some performance tests done with the know demo application used in the performance comparison:
+* A reduction of 25% of the transient memory used, which means a lot less memory is used and it is used at a slower pace. It also means less GC calls and a better CPU usage.
+* An improvement of 9% over throughput for non AJAX requests.
+* An improvement from 9% to 30% or even more for AJAX request, according to the tree size.
+
+Note these measures depends on the application studied but it can give an idea about what to expect.
+
+The recommendation is first evaluate your application requirements and use this technique only in cases where performance is a critical concern.
+Most of the time an application using MyFaces without the view pool is good enough.
+It is a good idea to select the views that receives the higher load and use the pool in only those cases, but that decision depends on the available memory and the load you application must face.
+If the view is too dynamic, disable the pool could give better results.
+
diff --git a/coreConceptsWhitespaceCompression.md b/coreConceptsWhitespaceCompression.md
new file mode 100644
index 0000000..8008f55
--- /dev/null
+++ b/coreConceptsWhitespaceCompression.md
@@ -0,0 +1,30 @@
+# Apache MyFaces Core Concepts - Whitespace Compression
+
+MyFaces Core provides a feature to minimize the additional white spaces in a HTML page to reduce its size.
+Usually the code generated by Renderers does not contains unnecessary spaces, but the code that comes directly from HTML markup in facelets comes straight from the xhtml or xml file used.
+
+The trick behind this feature is enable/disable it as a do inside facelets compiler option.
+Just add this into your `faces-config.xml` file:
+
+```xml
+<?xml version="1.0"?>
+<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+              xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd"
+              version="2.2">
+<faces-config-extension>
+    <facelets-processing>
+        <file-extension>.xhtml</file-extension>
+        <process-as>xhtml</process-as>
+        <oam-compress-spaces>true</oam-compress-spaces>
+    </facelets-processing>
+</faces-config>
+```
+
+That's it.  
+Now, facelets compiler will try to reduce or remove spaces/tabs when they are not necessary, following the rules for HTML white space compression, to avoid change the appearance of the page.  
+In simple words, this means when necessary it replace multiple continuous spaces with just one or remove all of them. It also try to use '\n' characters when possible, to make easier read the page markup once compressed.
+
+Since this optimization is done in facelets compiler, the effort to reduce white spaces is just done once, so all your pages will not impose additional CPU or memory overhead.
+So it reduce the memory and CPU resources required to render a page, so this can give a little boost to your application.
+
diff --git a/coregettingstarted.md b/coregettingstarted.md
new file mode 100644
index 0000000..73eab44
--- /dev/null
+++ b/coregettingstarted.md
@@ -0,0 +1,79 @@
+# Apache MyFaces Core - Getting Started
+
+Apache MyFaces Core can be deployed to any Servlet Container (like Tomcat, Jetty) inside the WAR or inside the container (/tomcat/lib).  
+If you want to deploy it, instead of Mojarra, inside a Application Server like Glassfish or JBoss, please check the documentation of the Application Server.  
+
+We also have a Quarkus extensions since 2.3-next.  
+
+
+## Dependency
+```xml
+<dependency>
+    <groupId>org.apache.myfaces.core</groupId>
+    <artifactId>myfaces-api</artifactId>
+    <version>2.3-next-M3</version>
+</dependency>
+<dependency>
+    <groupId>org.apache.myfaces.core</groupId>
+    <artifactId>myfaces-impl</artifactId>
+    <version>2.3-next-M3</version>
+</dependency>
+```
+
+## web.xml
+```xml
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
+         version="3.1">
+
+    <servlet>
+        <servlet-name>Faces Servlet</servlet-name>
+        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+    </servlet>
+    <servlet-mapping>
+        <servlet-name>Faces Servlet</servlet-name>
+        <url-pattern>*.xhtml</url-pattern>
+    </servlet-mapping>
+
+</web-app>
+```
+
+## index.xhtml
+```xml
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"
+  xmlns:f="http://xmlns.jcp.org/jsf/core"
+  xmlns:h="http://xmlns.jcp.org/jsf/html">
+
+  <h:head>
+
+  </h:head>
+
+  <h:body>
+
+    Hello World!
+
+  </h:body>
+</html>
+```
+
+## Quarkus
+
+Since 2.3-next a Quarkus extension is available: 
+
+```xml
+<dependency>
+	<groupId>org.apache.myfaces.core.extensions.quarkus</groupId>
+	<artifactId>myfaces-quarkus</artifactId>
+	<version>${myfaces.version}</version>
+</dependency>
+```
+
+A sample project can be found here: https://github.com/apache/myfaces/blob/master/extensions/quarkus/showcase/
+
+Differences to a normal servlet container
+* You need to put your views under src/main/resources/META-INF/resources as Quarkus doesn't create a WAR and src/main/webapp is ignored!
+* Session replication / passivation / clustering is not supported yet by Quarkus
+
diff --git a/extcdi.md b/extcdi.md
new file mode 100644
index 0000000..695de80
--- /dev/null
+++ b/extcdi.md
@@ -0,0 +1,22 @@
+# Apache MyFaces Extensions CDI / CODI
+
+> :warning: **This project is in maintaneance mode - Apache DeltaSpike is the successor!**
+
+MyFaces CODI is your best friend for CDI based projects. 
+
+The Apache MyFaces Extensions CDI project (aka CODI) hosts portable extensions for Contexts and Dependency Injection (CDI - JSR 299) for the Java-Platform (SE and EE). CODI is a toolbox for your CDI application (it provides advanced and convenient features e.g. for JSF and Bean-Validation). Like CDI itself CODI is focused on type-safety. It is a modularized and extensible framework. So it's easy to choose the needed parts to facilitate the daily work in your project.
+
+The main focus is to provide superior tools which will support you on solving your daily needs of software development with CDI, JSF, BV and JPA. However, you will also find modules which are independent of JSF as well as modules which improve the compatibility with other MyFaces frameworks like MyFaces ExtVal. Maybe the most important feature of MyFaces CODI is that it allows you to build a concise and efficient application-architecture.
+
+
+## Links
+
+* [Wiki](https://cwiki.apache.org/confluence/display/EXTCDI/Index/)
+* [SVN ViewVC](https://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/)
+* [SVN](https://svn.apache.org/repos/asf/myfaces/extensions/cdi/trunk/)
+
+
+
+
+
+
diff --git a/extscripting.md b/extscripting.md
new file mode 100644
index 0000000..507a7ec
--- /dev/null
+++ b/extscripting.md
@@ -0,0 +1,17 @@
+# Apache MyFaces Extensions Scripting / Ext-Scripting
+
+> :warning: **This project is in maintaneance mode**
+
+Welcome and hello to MyFaces Extension-Scripting, short Ext-Scripting. Ext-Scripting is an extensions project for MyFaces. It tries to add scripting and rapid prototyping (artifact level hot deployment) capabilities to JSF by adding scripting languages and JSP like recompilation mechanisms. 
+
+## Links
+
+* [Wiki](https://cwiki.apache.org/confluence/display/EXTSCRIPT/Index/)
+* [SVN ViewVC](https://svn.apache.org/viewvc/myfaces/extensions/scripting/trunk/)
+* [SVN](https://svn.apache.org/repos/asf/myfaces/extensions/scripting/trunk/)
+
+
+
+
+
+
diff --git a/extvalidator.md b/extvalidator.md
new file mode 100644
index 0000000..2b322b2
--- /dev/null
+++ b/extvalidator.md
@@ -0,0 +1,22 @@
+# Apache MyFaces Extensions Validator / ExtVal
+
+> :warning: **This project is in maintaneance mode**
+
+MyFaces Extensions Validator is a JSF centric validation framework.
+
+It offers powerful and easy to use field based validation based on annotations. It has a pluggable architecture, so it is possible to add new validation modules or support for component libraries like Trinidad or other 3rd party frameworks.
+
+MyFaces Extensions Validator is compatible with JSF 1.x and JSF 2.x. All versions require Java 1.5+
+
+
+## Links
+
+* [Wiki](https://cwiki.apache.org/confluence/display/EXTVAL/Index/)
+* [SVN ViewVC](https://svn.apache.org/viewvc/myfaces/extensions/validator/trunk/)
+* [SVN](https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk/)
+
+
+
+
+
+
diff --git a/home.md b/home.md
new file mode 100644
index 0000000..3486d2a
--- /dev/null
+++ b/home.md
@@ -0,0 +1,17 @@
+# Welcome to the Apache MyFaces Project
+
+Apache MyFaces is a project of the Apache Software Foundation, and hosts several sub-projects relating to the JavaServer™ Faces (JSF) technology.
+
+## Projects
+* MyFaces Core | Implementation of the JSF specification
+* MyFaces Tobago | A component library
+
+## Inactive projects (maintenance mode)
+* MyFaces Commons | Utilities like components, converters, validators
+* MyFaces Tomahawk | A component library
+* MyFaces Trinidad | A component library (former Oracle ADF-Faces)
+* MyFaces Orchestra | Utility library based on Spring
+* MyFaces Extensions Validator | Validation framework based on annotations
+* MyFaces Extensions CDI | Utility library based on CDI
+* MyFaces Extensions Scripting | Adds scripting and rapid prototyping (hot deployment) to JSF
+* MyFaces Portlet Bridge | Bridge between Portlets and JSF
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..70a88f2
--- /dev/null
+++ b/index.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8">
+  <title>Apache MyFaces</title>
+  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+  <meta name="description" content="Description">
+  <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
+  <link rel="stylesheet" href="//unpkg.com/docsify/themes/vue.css">
+  <link rel="stylesheet" href="./resources/css/template.css">
+</head>
+<body>
+  <div id="app"></div>
+  <script>
+    window.$docsify = {
+      name: 'myfaces',
+      repo: '',
+      homepage: 'home.md',
+      loadSidebar: 'menu.md',
+      mergeNavbar: false,
+	  loadNavbar: true,
+	  loadNavbar: 'navbar.md',
+      subMaxLevel: 1,
+      themeColor: '#235ba5',
+      logo:'/resources/images/myfaces.png',
+      search: 'auto',
+	  topMargin: 60,
+      alias: {
+        '/.*/menu.md': '/menu.md',
+      },
+      noCompileLinks: [
+        '(\\.\\./)*jsdocs/.*', // jsdoc directory
+        '.*\.d\.ts*', // TypeScript declarations file
+      ],
+      plugins: [
+        function(hook, vm) {
+          hook.ready(function () {
+
+          });
+        }
+      ]
+    };
+
+    if (typeof navigator.serviceWorker !== 'undefined') {
+       navigator.serviceWorker.register('sw.js')
+    }
+  </script>
+<script>
+
+</script>
+  <script src="//unpkg.com/docsify/lib/docsify.min.js"></script>
+  <script src="//unpkg.com/docsify/lib/plugins/search.min.js"></script>
+  <script src="//unpkg.com/prismjs/components/prism-java.min.js"></script>
+</body>
+</html>
diff --git a/menu.md b/menu.md
new file mode 100644
index 0000000..8bdef9e
--- /dev/null
+++ b/menu.md
@@ -0,0 +1,36 @@
+- [Home](/)
+- [News](/news.md)
+
+- [Core](/core.md)
+  - [Getting Started](/coregettingstarted.md)
+  - Concepts
+    - [View Pooling](/coreConceptsViewPooling.md)
+	- [Cache EL expressions](/coreConceptsCacheElExpressions.md)
+	- [ELResolver ordering](/coreConceptsELResolverOrdering.md)
+	- [Immediate Attribute](/coreConceptsImmediateAttribute.md)	
+	- [Whitespace Compression](/coreConceptsWhitespaceCompression.md)
+  - [1.1](/core11.md)
+  - [1.2](/core12.md)
+  - [2.0](/core20.md)
+  - [2.1](/core21.md)
+  - [2.2](/core22.md)
+  - [2.3](/core23.md)
+  - [2.3-next](/core23next.md)
+  - [3.0](/core30.md)
+
+- Tobago
+  - [Getting Started](/tobago/gettingstarted.md)
+  - [Source](/tobago/source.md)
+  - [Downloads](/tobago/downloads.md)
+
+- Inactive / Maintenance
+  - [Commons](/commons.md)
+  - [Tomahawk](/tomahawk.md)
+  - [Trinidad](/trinidad.md)
+  - [Orchestra](/orchestra.md)
+  - [Validator / ExtVal](/extvalidator.md)
+  - [CDI / CODI](/extcdi.md)
+  - [Scripting](/extscripting.md)
+  - [Portlet Bridge](/portletbridge.md)
+  
+- [Community](/community.md)
\ No newline at end of file
diff --git a/navbar.md b/navbar.md
new file mode 100644
index 0000000..1e9245b
--- /dev/null
+++ b/navbar.md
@@ -0,0 +1,3 @@
+![logo](/resources/images/myfaces.png ':class=myfaces')
+
+![logo](/resources/images/apache.png ':class=apache')
\ No newline at end of file
diff --git a/news.md b/news.md
new file mode 100644
index 0000000..aad0210
--- /dev/null
+++ b/news.md
@@ -0,0 +1,13 @@
+# News
+
+## July 9, 2020 - MyFaces Core 2.2.13 released
+
+MyFaces Core 2.2.13 have been released. It is available from the [Download](/core/download.md) page, and in the central Maven repository under Group ID "org.apache.myfaces.core".
+
+Release notes can be found here: [2.2.13](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=10600&version=12339346)
+
+## December 2, 2019 - MyFaces Core 2.3.6 released
+
+MyFaces Core 2.3.6 have been released. It is available from the [Download](/core/download.md) page, and in the central Maven repository under Group ID "org.apache.myfaces.core".
+
+Release notes can be found here: [2.3.6](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=10600&version=12346352)
\ No newline at end of file
diff --git a/orchestra.md b/orchestra.md
new file mode 100644
index 0000000..13c6dcc
--- /dev/null
+++ b/orchestra.md
@@ -0,0 +1,26 @@
+# Apache MyFaces Orchestra 
+
+> :warning: **This project is in maintaneance mode**
+
+Orchestra is a small library based on JSF and Spring, that can be used in web applications to provide the following features:
+
+* A conversation (aka dialog) scope for beans.
+* Conversation-scope persistence contexts. This fixes the dreaded LazyInitializationException or NonUniqueObjectException problems when working with persistent objects.
+* Declarative transaction annotations.
+* A "dynaForm" JSF component that helps create forms for editing persistent data.
+
+Together these features ease development of applications that perform a lot of persistence (ie are strongly coupled with a database). In particular, the dynaForm component (which requires the other parts of Orchestra) makes it easy to write the "data entry" type applications that Oracle Forms or Microsoft Access specialise in.
+
+Orchestra currently supports JSF1.1, JSF1.2 and JSF2.0.
+
+## Links
+
+* [Wiki](https://cwiki.apache.org/confluence/display/MYFACES2/Orchestra/)
+* [SVN ViewVC](https://svn.apache.org/viewvc/myfaces/orchestra/trunk/)
+* [SVN](https://svn.apache.org/repos/asf/myfaces/orchestra/trunk/)
+
+
+
+
+
+
diff --git a/resources/css/template.css b/resources/css/template.css
new file mode 100644
index 0000000..c0e98a4
--- /dev/null
+++ b/resources/css/template.css
@@ -0,0 +1,62 @@
+
+.app-nav {
+	width: calc(100% - 300px - 50px);
+}
+
+body.close .app-nav {
+	width: calc(100% - 50px);
+}
+
+.app-name img {
+	height: 75px;
+}
+
+.sidebar > h1.app-name {
+	margin: 10px;
+}
+
+img.apache {
+	height: 50px;
+	margin: 5px;
+	display: block;
+	float: right;
+}
+
+img.myfaces {
+	height: 50px;
+	margin: 5px;
+	display: block;
+	float: left;
+}
+
+.content {
+	background: linear-gradient(to bottom, #e1e1e1 1%,#ffffff 15%);
+}
+
+.markdown-section {
+	max-width: 100%;
+	padding: 40px 60px 20px 60px;
+}
+
+.sidebar .sidebar-nav {
+    line-height: 1.3em;
+}
+
+.markdown-section p, .markdown-section ul, .markdown-section ol {
+    line-height: 1.3rem;
+    word-spacing: 0.05rem;
+}
+
+.markdown-section figure, .markdown-section p {
+    margin: 0.8em 0;
+}
+
+.markdown-section h2 {
+    font-size: 1.75rem;
+    margin: 35px 0 0.8rem;
+}
+
+.markdown-section h3 {
+    font-size: 1.4rem;
+    margin: 40px 0 0.6rem;
+}
\ No newline at end of file
diff --git a/resources/images/apache.png b/resources/images/apache.png
new file mode 100644
index 0000000..8dca813
Binary files /dev/null and b/resources/images/apache.png differ
diff --git a/resources/images/myfaces.png b/resources/images/myfaces.png
new file mode 100644
index 0000000..fa3e0cd
Binary files /dev/null and b/resources/images/myfaces.png differ
diff --git a/sw.js b/sw.js
new file mode 100644
index 0000000..9a4ee1a
--- /dev/null
+++ b/sw.js
@@ -0,0 +1,95 @@
+/* ===========================================================
+ * docsify sw.js
+ * ===========================================================
+ * Copyright 2016 @huxpro
+ * Licensed under Apache 2.0
+ * Register service worker.
+ * ========================================================== */
+
+const RUNTIME = 'docsify'
+const HOSTNAME_WHITELIST = [
+  self.location.hostname,
+  'fonts.gstatic.com',
+  'fonts.googleapis.com',
+  'unpkg.com'
+]
+
+// The Util Function to hack URLs of intercepted requests
+const getFixedUrl = (req) => {
+  var now = Date.now()
+  var url = new URL(req.url)
+
+  // 1. fixed http URL
+  // Just keep syncing with location.protocol
+  // fetch(httpURL) belongs to active mixed content.
+  // And fetch(httpRequest) is not supported yet.
+  url.protocol = self.location.protocol
+
+  // 2. add query for caching-busting.
+  // Github Pages served with Cache-Control: max-age=600
+  // max-age on mutable content is error-prone, with SW life of bugs can even extend.
+  // Until cache mode of Fetch API landed, we have to workaround cache-busting with query string.
+  // Cache-Control-Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=453190
+  if (url.hostname === self.location.hostname) {
+    url.search += (url.search ? '&' : '?') + 'cache-bust=' + now
+  }
+  return url.href
+}
+
+/**
+ *  @Lifecycle Activate
+ *  New one activated when old isnt being used.
+ *
+ *  waitUntil(): activating ====> activated
+ */
+self.addEventListener('activate', event => {
+  event.waitUntil(self.clients.claim())
+})
+
+/**
+ *  @Functional Fetch
+ *  All network requests are being intercepted here.
+ *
+ *  void respondWith(Promise<Response> r)
+ */
+self.addEventListener('fetch', event => {
+  // Skip some of cross-origin requests, like those for Google Analytics.
+  if (HOSTNAME_WHITELIST.indexOf(new URL(event.request.url).hostname) > -1) {
+    // Stale-while-revalidate
+    // similar to HTTP's stale-while-revalidate: https://www.mnot.net/blog/2007/12/12/stale
+    // Upgrade from Jake's to Surma's: https://gist.github.com/surma/eb441223daaedf880801ad80006389f1
+    const cached = caches.match(event.request)
+    const cachedDelayed = new Promise(function(resolve, reject) {
+      setTimeout(resolve, 500, cached);
+    });
+    const fixedUrl = getFixedUrl(event.request)
+    const fetched = fetch(fixedUrl, { cache: 'no-store' })
+    const fetchedCopy = fetched.then(resp => resp.clone())
+
+    if (navigator.onLine) {
+      // Call respondWith() with whatever we get first.
+      // If the fetch fails (e.g disconnected), wait for the cache.
+      // If there’s nothing in cache, wait for the fetch.
+      // If neither yields a response, return offline pages.
+      event.respondWith(
+          Promise.race([fetched.catch(_ => cached), cachedDelayed])
+              .then(resp => resp || fetched)
+              .catch(_ => { /* eat any errors */ })
+      )
+    }
+    else { // offline
+      event.respondWith(
+          Promise.resolve(cached)
+              .then(resp => resp)
+              .catch(_ => { /* eat any errors */ })
+      )
+    }
+
+    // Update the cache with the version we fetched (only for ok status)
+    event.waitUntil(
+      Promise.all([fetchedCopy, caches.open(RUNTIME)])
+        .then(([response, cache]) => response.ok && cache.put(event.request, response))
+        .catch(_ => { /* eat any errors */ })
+    )
+  }
+})
\ No newline at end of file
diff --git a/tomahawk.md b/tomahawk.md
new file mode 100644
index 0000000..1a90fa3
--- /dev/null
+++ b/tomahawk.md
@@ -0,0 +1,17 @@
+# Apache MyFaces Tomahawk
+
+> :warning: **This project is in maintaneance mode**
+
+MyFaces provides a series of JSF components that go beyond the JSF specification. These components are 100% compatible with the Sun JSF 1.1 Reference Implementation (RI) or any other JSF 1.1 compatible implementation. Of course the custom components can also be used with the Apache MyFaces JSF implementation.
+
+## Links
+
+* [Wiki](https://cwiki.apache.org/confluence/display/MYFACES2/Tomahawk/)
+* [SVN ViewVC](https://svn.apache.org/viewvc/myfaces/tomahawk/trunk/)
+* [SVN](https://svn.apache.org/repos/asf/myfaces/tomahawk/trunk/)
+
+
+
+
+
+
diff --git a/trinidad.md b/trinidad.md
new file mode 100644
index 0000000..04fb98c
--- /dev/null
+++ b/trinidad.md
@@ -0,0 +1,23 @@
+# Apache MyFaces Trinidad
+
+> :warning: **This project is in maintaneance mode**
+
+Apache MyFaces Trinidad is a JSF framework including a large, enterprise quality component library, supporting critical features such as accessibility (e.g. Section 508), right-to-left languages, etc. It also includes a set of framework features, including:
+
+* Partial-page rendering support for the entire component set
+* Integrated client-side validation
+* A dialog framework
+* pageFlowScope, for communicating between pages
+
+
+## Links
+
+* [Wiki](https://cwiki.apache.org/confluence/display/MYFACES2/Trinidad)
+* [SVN ViewVC](https://svn.apache.org/viewvc/myfaces/trinidad/trunk/)
+* [SVN](https://svn.apache.org/repos/asf/myfaces/trinidad/trunk/)
+
+
+
+
+
+