You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by de...@apache.org on 2018/05/08 12:48:07 UTC

[myfaces] branch refactor_shared_2_1_x created (now 9d564d5)

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

deki pushed a change to branch refactor_shared_2_1_x
in repository https://gitbox.apache.org/repos/asf/myfaces.git.


      at 9d564d5  rename shared-impl to shared, configure pom.xml to use as internal module using shade plugin, and move non changeable classes to impl

This branch includes the following new commits:

     new 83d5a55  copy shared to preserve svn info
     new 2421834  copy shared to preserve svn info
     new 84f67e2  change license header and configure pom.xml
     new a908b5a  add shared internal module to core project
     new 9d564d5  rename shared-impl to shared, configure pom.xml to use as internal module using shade plugin, and move non changeable classes to impl

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


-- 
To stop receiving notification emails like this one, please contact
deki@apache.org.

[myfaces] 01/05: copy shared to preserve svn info

Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

deki pushed a commit to branch refactor_shared_2_1_x
in repository https://gitbox.apache.org/repos/asf/myfaces.git

commit 83d5a55144f6be8af3514bcb87a3824a0ca4ea80
Author: Leonardo Uribe <lu...@apache.org>
AuthorDate: Sat Jul 23 04:26:24 2011 +0000

    copy shared to preserve svn info
---
 shared/src/assembler/myfacesscripts-compiler.xml   |   27 +
 .../myfacesscripts-uncompressed-compiler.xml       |   27 +
 .../application/DefaultViewHandlerSupport.java     |  559 ++++
 .../shared/application/FacesServletMapping.java    |  158 +
 .../shared/application/InvalidViewIdException.java |   64 +
 .../shared/application/ViewHandlerSupport.java     |   49 +
 .../myfaces/shared/component/BindingAware.java     |   24 +
 .../shared/component/DisplayValueOnlyCapable.java  |   47 +
 .../myfaces/shared/component/EscapeCapable.java    |   32 +
 .../shared/component/ExecuteOnCallback.java        |   36 +
 .../myfaces/shared/config/MyfacesConfig.java       |  848 ++++++
 .../shared/context/AjaxExceptionHandlerImpl.java   |  339 +++
 .../shared/context/ExceptionHandlerImpl.java       |  248 ++
 .../shared/context/ResponseWriterWrapper.java      |  132 +
 .../SwitchAjaxExceptionHandlerWrapperImpl.java     |  115 +
 .../myfaces/shared/context/flash/FlashImpl.java    | 1087 +++++++
 .../context/flash/FlashScopeDisabledException.java |   61 +
 .../myfaces/shared/context/flash/SubKeyMap.java    |  286 ++
 .../shared/el/SimpleActionMethodBinding.java       |   90 +
 .../main/java/org/apache/myfaces/shared/readme.txt |    5 +
 .../shared/renderkit/ClientBehaviorEvents.java     |   48 +
 .../apache/myfaces/shared/renderkit/JSFAttr.java   |  169 ++
 .../myfaces/shared/renderkit/RendererUtils.java    | 1354 +++++++++
 .../shared/renderkit/_SharedRendererUtils.java     |  494 ++++
 .../apache/myfaces/shared/renderkit/html/HTML.java |  618 ++++
 .../renderkit/html/HtmlBodyRendererBase.java       |  124 +
 .../renderkit/html/HtmlButtonRendererBase.java     |  666 +++++
 .../renderkit/html/HtmlCheckboxRendererBase.java   |  427 +++
 .../renderkit/html/HtmlFormRendererBase.java       |  307 ++
 .../renderkit/html/HtmlGridRendererBase.java       |  359 +++
 .../renderkit/html/HtmlGroupRendererBase.java      |   99 +
 .../renderkit/html/HtmlImageRendererBase.java      |  129 +
 .../renderkit/html/HtmlLinkRendererBase.java       |  963 ++++++
 .../renderkit/html/HtmlListboxRendererBase.java    |  174 ++
 .../renderkit/html/HtmlMenuRendererBase.java       |  170 ++
 .../renderkit/html/HtmlMessageRendererBase.java    |  410 +++
 .../renderkit/html/HtmlMessagesRendererBase.java   |  566 ++++
 .../html/HtmlOutcomeTargetButtonRendererBase.java  |  183 ++
 .../renderkit/html/HtmlRadioRendererBase.java      |  377 +++
 .../shared/renderkit/html/HtmlRenderer.java        |  152 +
 .../shared/renderkit/html/HtmlRendererUtils.java   | 3111 ++++++++++++++++++++
 .../renderkit/html/HtmlResponseWriterImpl.java     |  893 ++++++
 .../renderkit/html/HtmlSecretRendererBase.java     |  193 ++
 .../renderkit/html/HtmlTableRendererBase.java      | 1149 ++++++++
 .../renderkit/html/HtmlTextRendererBase.java       |  288 ++
 .../renderkit/html/HtmlTextareaRendererBase.java   |  161 +
 .../shared/renderkit/html/util/FormInfo.java       |   43 +
 .../shared/renderkit/html/util/HTMLEncoder.java    |  669 +++++
 .../renderkit/html/util/JavascriptUtils.java       |  308 ++
 .../shared/renderkit/html/util/ResourceUtils.java  |  271 ++
 .../shared/renderkit/html/util/UnicodeEncoder.java |   64 +
 .../shared/resource/AliasResourceMetaImpl.java     |   96 +
 .../resource/BaseResourceHandlerSupport.java       |  229 ++
 .../shared/resource/ClassLoaderResourceLoader.java |  513 ++++
 .../resource/ExternalContextResourceLoader.java    |  206 ++
 .../shared/resource/ResourceHandlerCache.java      |  239 ++
 .../shared/resource/ResourceHandlerSupport.java    |   86 +
 .../myfaces/shared/resource/ResourceImpl.java      |  381 +++
 .../myfaces/shared/resource/ResourceLoader.java    |  156 +
 .../shared/resource/ResourceLoaderUtils.java       |  137 +
 .../myfaces/shared/resource/ResourceMeta.java      |   43 +
 .../myfaces/shared/resource/ResourceMetaImpl.java  |  116 +
 .../shared/taglib/UIComponentBodyELTagBase.java    |  264 ++
 .../shared/taglib/UIComponentBodyTagBase.java      |  205 ++
 .../shared/taglib/UIComponentELTagBase.java        |  259 ++
 .../shared/taglib/UIComponentELTagUtils.java       |  402 +++
 .../myfaces/shared/taglib/UIComponentTagBase.java  |  208 ++
 .../myfaces/shared/taglib/UIComponentTagUtils.java |  348 +++
 .../shared/taglib/core/ConvertDateTimeTagBase.java |  213 ++
 .../shared/taglib/core/SelectItemTagBase.java      |  107 +
 .../taglib/html/HtmlCommandButtonELTagBase.java    |  173 ++
 .../taglib/html/HtmlCommandButtonTagBase.java      |  173 ++
 .../taglib/html/HtmlCommandLinkELTagBase.java      |  189 ++
 .../shared/taglib/html/HtmlCommandLinkTagBase.java |  189 ++
 .../taglib/html/HtmlComponentBodyELTagBase.java    |  167 ++
 .../taglib/html/HtmlComponentBodyTagBase.java      |  167 ++
 .../shared/taglib/html/HtmlComponentELTagBase.java |  169 ++
 .../shared/taglib/html/HtmlComponentTagBase.java   |  171 ++
 .../shared/taglib/html/HtmlDataTableELTagBase.java |  223 ++
 .../shared/taglib/html/HtmlDataTableTagBase.java   |  223 ++
 .../shared/taglib/html/HtmlFormELTagBase.java      |  112 +
 .../shared/taglib/html/HtmlFormTagBase.java        |  112 +
 .../taglib/html/HtmlGraphicImageELTagBase.java     |  139 +
 .../taglib/html/HtmlGraphicImageTagBase.java       |  139 +
 .../shared/taglib/html/HtmlInputELTagBase.java     |   91 +
 .../taglib/html/HtmlInputHiddenELTagBase.java      |   58 +
 .../shared/taglib/html/HtmlInputHiddenTagBase.java |   59 +
 .../taglib/html/HtmlInputSecretELTagBase.java      |  188 ++
 .../shared/taglib/html/HtmlInputSecretTagBase.java |  188 ++
 .../shared/taglib/html/HtmlInputTagBase.java       |   90 +
 .../shared/taglib/html/HtmlInputTextELTagBase.java |  155 +
 .../shared/taglib/html/HtmlInputTextTagBase.java   |  155 +
 .../taglib/html/HtmlInputTextareaELTagBase.java    |  171 ++
 .../taglib/html/HtmlInputTextareaTagBase.java      |  171 ++
 .../shared/taglib/html/HtmlMessageELTagBase.java   |  158 +
 .../shared/taglib/html/HtmlMessageTagBase.java     |  158 +
 .../shared/taglib/html/HtmlMessagesELTagBase.java  |  161 +
 .../shared/taglib/html/HtmlMessagesTagBase.java    |  161 +
 .../taglib/html/HtmlOutputFormatELTagBase.java     |   65 +
 .../taglib/html/HtmlOutputFormatTagBase.java       |   65 +
 .../taglib/html/HtmlOutputLabelELTagBase.java      |   92 +
 .../shared/taglib/html/HtmlOutputLabelTagBase.java |   92 +
 .../taglib/html/HtmlOutputLinkELTagBase.java       |  165 ++
 .../shared/taglib/html/HtmlOutputLinkTagBase.java  |  165 ++
 .../taglib/html/HtmlOutputTextELTagBase.java       |   68 +
 .../shared/taglib/html/HtmlOutputTextTagBase.java  |   68 +
 .../shared/taglib/html/HtmlPanelGridELTagBase.java |  195 ++
 .../shared/taglib/html/HtmlPanelGridTagBase.java   |  195 ++
 .../taglib/html/HtmlPanelGroupELTagBase.java       |   62 +
 .../shared/taglib/html/HtmlPanelGroupTagBase.java  |   62 +
 .../html/HtmlSelectBooleanCheckboxELTagBase.java   |  160 +
 .../html/HtmlSelectBooleanCheckboxTagBase.java     |  160 +
 .../taglib/html/HtmlSelectListboxELTagBase.java    |  166 ++
 .../taglib/html/HtmlSelectListboxTagBase.java      |  166 ++
 .../html/HtmlSelectManyCheckboxELTagBase.java      |  194 ++
 .../taglib/html/HtmlSelectManyCheckboxTagBase.java |  194 ++
 .../taglib/html/HtmlSelectMenuELTagBase.java       |  170 ++
 .../shared/taglib/html/HtmlSelectMenuTagBase.java  |  170 ++
 .../taglib/html/HtmlSelectOneRadioELTagBase.java   |  187 ++
 .../taglib/html/HtmlSelectOneRadioTagBase.java     |  187 ++
 .../myfaces/shared/test/ClassElementHandler.java   |   97 +
 .../org/apache/myfaces/shared/trace/Closure.java   |   24 +
 .../myfaces/shared/trace/TracingIterator.java      |  143 +
 .../myfaces/shared/trace/TracingSupport.java       |  174 ++
 .../org/apache/myfaces/shared/util/ArrayUtils.java |  252 ++
 .../org/apache/myfaces/shared/util/Assert.java     |   38 +
 .../myfaces/shared/util/BiLevelCacheMap.java       |  280 ++
 .../myfaces/shared/util/ClassLoaderExtension.java  |   36 +
 .../myfaces/shared/util/ClassLoaderUtils.java      |  370 +++
 .../org/apache/myfaces/shared/util/ClassUtils.java |  604 ++++
 .../apache/myfaces/shared/util/CommentUtils.java   |  131 +
 .../apache/myfaces/shared/util/ExceptionUtils.java |  102 +
 .../myfaces/shared/util/ExternalContextUtils.java  |  704 +++++
 .../org/apache/myfaces/shared/util/FastWriter.java |  110 +
 .../apache/myfaces/shared/util/HashMapUtils.java   |   91 +
 .../apache/myfaces/shared/util/LocaleUtils.java    |  142 +
 .../apache/myfaces/shared/util/MessageUtils.java   |  630 ++++
 .../myfaces/shared/util/MyFacesClassLoader.java    |  221 ++
 .../shared/util/MyFacesObjectInputStream.java      |   56 +
 .../myfaces/shared/util/NullEnumeration.java       |   48 +
 .../apache/myfaces/shared/util/NullIterator.java   |   58 +
 .../shared/util/ParametrizableFacesMessage.java    |  153 +
 .../apache/myfaces/shared/util/RequestType.java    |  128 +
 .../myfaces/shared/util/RestoreStateUtils.java     |  126 +
 .../myfaces/shared/util/SelectItemsIterator.java   |  326 ++
 .../org/apache/myfaces/shared/util/StateUtils.java | 1003 +++++++
 .../apache/myfaces/shared/util/StringUtils.java    |  711 +++++
 .../myfaces/shared/util/WebConfigParamUtils.java   |  672 +++++
 .../myfaces/shared/util/_ComponentUtils.java       |   53 +
 .../apache/myfaces/shared/util/_EmptyIterator.java |   41 +
 .../apache/myfaces/shared/util/el/ActionsMap.java  |  158 +
 .../apache/myfaces/shared/util/el/GenericMap.java  |   86 +
 .../apache/myfaces/shared/util/el/StringMap.java   |   48 +
 .../apache/myfaces/shared/util/el/TestsMap.java    |   52 +
 .../shared/util/serial/DefaultSerialFactory.java   |   46 +
 .../myfaces/shared/util/serial/SerialFactory.java  |   35 +
 .../shared/util/servlet/SourceCodeServlet.java     |   62 +
 .../shared/util/xml/MyFacesErrorHandler.java       |   70 +
 .../apache/myfaces/shared/util/xml/XmlUtils.java   |  109 +
 .../shared/view/HttpServletResponseSwitch.java     |  153 +
 .../view/JspViewDeclarationLanguageBase.java       |  452 +++
 .../apache/myfaces/shared/view/ResponseSwitch.java |   42 +
 .../myfaces/shared/view/ServletResponseSwitch.java |  151 +
 .../shared/view/SwitchableOutputStream.java        |   91 +
 .../myfaces/shared/view/SwitchableWriter.java      |  128 +
 .../shared/view/ViewDeclarationLanguageBase.java   |  147 +
 .../myfaces/shared/view/ViewResponseWrapper.java   |   27 +
 .../webapp/webxml/DelegatedFacesServlet.java       |   23 +
 .../shared/webapp/webxml/FilterMapping.java        |   67 +
 .../shared/webapp/webxml/ServletMapping.java       |   87 +
 .../myfaces/shared/webapp/webxml/WebXml.java       |  282 ++
 .../myfaces/shared/webapp/webxml/WebXmlParser.java |  373 +++
 .../META-INF/resources/myfaces/_impl/oamSubmit.js  |  160 +
 shared/src/main/resources/META-INF/LICENSE.txt     |  174 ++
 shared/src/main/resources/META-INF/NOTICE.txt      |    8 +
 .../application/DefaultViewHandlerSupportTest.java |  177 ++
 .../shared/context/flash/FlashImplTest.java        | 1093 +++++++
 .../shared/renderkit/RendererUtilsTest.java        |  145 +
 .../renderkit/html/HtmlRendererUtilsTest.java      |   90 +
 .../renderkit/html/HtmlResponseWriterImplTest.java |  374 +++
 .../renderkit/html/util/HTMLEncoderTest.java       |  352 +++
 .../shared/taglib/UIComponentTagUtilsTest.java     |   90 +
 .../shared/util/AbstractStateUtilsTest.java        |  225 ++
 .../shared/util/CachedStateUtilsAES_CBCTest.java   |   64 +
 .../util/CachedStateUtilsBlowfish_ECBTest.java     |   54 +
 .../shared/util/CachedStateUtilsDefaultTest.java   |   54 +
 .../util/CachedStateUtilsTripleDES_ECBTest.java    |   53 +
 .../myfaces/shared/util/CommentUtilsTest.java      |   70 +
 .../shared/util/InitVector_CBCTestCase.java        |   88 +
 .../myfaces/shared/util/MessageUtilsTest.java      |  214 ++
 .../myfaces/shared/util/SecretKeyCacheTest.java    |   89 +
 .../shared/util/SecretKeyConfigurationTest.java    |  101 +
 .../myfaces/shared/util/StateUtilsAES_CBCTest.java |   59 +
 .../shared/util/StateUtilsBlowfish_ECBTest.java    |   58 +
 .../myfaces/shared/util/StateUtilsDefaultTest.java |   51 +
 .../shared/util/StateUtilsTripleDES_ECBTest.java   |   58 +
 .../shared/webapp/webxml/ServletMappingTest.java   |   53 +
 .../test/resources/javax/faces/Messages.properties |  135 +
 .../resources/javax/faces/Messages_ca.properties   |  127 +
 .../resources/javax/faces/Messages_de.properties   |  129 +
 .../resources/javax/faces/Messages_en.properties   |  129 +
 .../resources/javax/faces/Messages_es.properties   |  127 +
 .../resources/javax/faces/Messages_fr.properties   |  127 +
 .../resources/javax/faces/Messages_it.properties   |  128 +
 .../resources/javax/faces/Messages_ja.properties   |  127 +
 .../resources/javax/faces/Messages_mt.properties   |  135 +
 .../resources/javax/faces/Messages_nl.properties   |  127 +
 .../javax/faces/Messages_pt_BR.properties          |  127 +
 .../resources/javax/faces/Messages_ru.properties   |  127 +
 .../javax/faces/Messages_zh_CN.properties          |  127 +
 .../apache/myfaces/shared/application/view1.jsp    |   12 +
 .../apache/myfaces/shared/application/view2.xhtml  |   10 +
 212 files changed, 46600 insertions(+)

diff --git a/shared/src/assembler/myfacesscripts-compiler.xml b/shared/src/assembler/myfacesscripts-compiler.xml
new file mode 100644
index 0000000..fd25ef7
--- /dev/null
+++ b/shared/src/assembler/myfacesscripts-compiler.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<assembler>
+    <scripts>
+        <script>
+            <fileName>oamSubmit.js</fileName>
+            <includes>
+                <include>**/_impl/oamSubmit.js</include>
+            </includes>
+        </script>
+    </scripts>
+</assembler>
diff --git a/shared/src/assembler/myfacesscripts-uncompressed-compiler.xml b/shared/src/assembler/myfacesscripts-uncompressed-compiler.xml
new file mode 100644
index 0000000..a641aab
--- /dev/null
+++ b/shared/src/assembler/myfacesscripts-uncompressed-compiler.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+-->
+<assembler>
+    <scripts>
+        <script>
+            <fileName>oamSubmit-uncompressed.js</fileName>
+            <includes>
+                <include>**/_impl/oamSubmit.js</include>
+            </includes>
+        </script>
+    </scripts>
+</assembler>
diff --git a/shared/src/main/java/org/apache/myfaces/shared/application/DefaultViewHandlerSupport.java b/shared/src/main/java/org/apache/myfaces/shared/application/DefaultViewHandlerSupport.java
new file mode 100644
index 0000000..9843098
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/application/DefaultViewHandlerSupport.java
@@ -0,0 +1,559 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.application;
+
+import java.net.MalformedURLException;
+import java.util.Collections;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.application.ProjectStage;
+import javax.faces.application.ViewHandler;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.view.ViewDeclarationLanguage;
+
+import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
+
+/**
+ * A ViewHandlerSupport implementation for use with standard Java Servlet engines,
+ * ie an engine that supports javax.servlet, and uses a standard web.xml file.
+ *
+ * @author Mathias Broekelmann (latest modification by $Author: lu4242 $)
+ * @version $Revision: 887436 $ $Date: 2009-12-04 16:11:25 -0700 (Fri, 04 Dec 2009) $
+ */
+public class DefaultViewHandlerSupport implements ViewHandlerSupport
+{
+    /**
+     * Identifies the FacesServlet mapping in the current request map.
+     */
+    private static final String CACHED_SERVLET_MAPPING =
+        DefaultViewHandlerSupport.class.getName() + ".CACHED_SERVLET_MAPPING";
+
+    //private static final Log log = LogFactory.getLog(DefaultViewHandlerSupport.class);
+    private static final Logger log = Logger.getLogger(DefaultViewHandlerSupport.class.getName());
+
+    @JSFWebConfigParam(defaultValue = "500", since = "2.0.2")
+    private static final String CHECKED_VIEWID_CACHE_SIZE_ATTRIBUTE = "org.apache.myfaces.CHECKED_VIEWID_CACHE_SIZE";
+    private static final int CHECKED_VIEWID_CACHE_DEFAULT_SIZE = 500;
+
+    @JSFWebConfigParam(defaultValue = "true", since = "2.0.2")
+    private static final String CHECKED_VIEWID_CACHE_ENABLED_ATTRIBUTE = "org.apache.myfaces.CHECKED_VIEWID_CACHE_ENABLED";
+    private static final boolean CHECKED_VIEWID_CACHE_ENABLED_DEFAULT = true;
+
+    private Map<String, Boolean> _checkedViewIdMap = null;
+    private Boolean _checkedViewIdCacheEnabled = null;
+
+    public String calculateViewId(FacesContext context, String viewId)
+    {
+        //If no viewId found, don't try to derive it, just continue.
+        if (viewId == null)
+        {
+            return null;
+        }
+        FacesServletMapping mapping = getFacesServletMapping(context);
+        if (mapping == null || mapping.isExtensionMapping())
+        {
+            viewId = handleSuffixMapping(context, viewId);
+        }
+        else if(mapping.isPrefixMapping())
+        {
+            viewId = handlePrefixMapping(viewId,mapping.getPrefix());
+        }
+        else if (viewId != null && mapping.getUrlPattern().startsWith(viewId))
+        {
+            throw new InvalidViewIdException(viewId);
+        }
+
+        //if(viewId != null)
+        //{
+        //    return (checkResourceExists(context,viewId) ? viewId : null);
+        //}
+
+        return viewId;    // return null if no physical resource exists
+    }
+    
+    public String calculateAndCheckViewId(FacesContext context, String viewId)
+    {
+        //If no viewId found, don't try to derive it, just continue.
+        if (viewId == null)
+        {
+            return null;
+        }
+        FacesServletMapping mapping = getFacesServletMapping(context);
+        if (mapping == null || mapping.isExtensionMapping())
+        {
+            viewId = handleSuffixMapping(context, viewId);
+        }
+        else if(mapping.isPrefixMapping())
+        {
+            viewId = handlePrefixMapping(viewId,mapping.getPrefix());
+
+            if(viewId != null)
+            {
+                return (checkResourceExists(context,viewId) ? viewId : null);
+            }
+        }
+        else if (viewId != null && mapping.getUrlPattern().startsWith(viewId))
+        {
+            throw new InvalidViewIdException(viewId);
+        }
+        else
+        {
+            if(viewId != null)
+            {
+                return (checkResourceExists(context,viewId) ? viewId : null);
+            }
+        }
+
+        return viewId;    // return null if no physical resource exists
+    }
+
+    public String calculateActionURL(FacesContext context, String viewId)
+    {
+        if (viewId == null || !viewId.startsWith("/"))
+        {
+            throw new IllegalArgumentException("ViewId must start with a '/': " + viewId);
+        }
+
+        FacesServletMapping mapping = getFacesServletMapping(context);
+        ExternalContext externalContext = context.getExternalContext();
+        String contextPath = externalContext.getRequestContextPath();
+        StringBuilder builder = new StringBuilder(contextPath);
+        if (mapping != null)
+        {
+            if (mapping.isExtensionMapping())
+            {
+                String[] contextSuffixes = getContextSuffix(context); 
+                boolean founded = false;
+                for (String contextSuffix : contextSuffixes)
+                {
+                    if (viewId.endsWith(contextSuffix))
+                    {
+                        builder.append(viewId.substring(0, viewId.indexOf(contextSuffix)));
+                        builder.append(mapping.getExtension());
+                        founded = true;
+                        break;
+                    }
+                }
+                if (!founded)
+                {   
+                    if(viewId.lastIndexOf(".") != -1 )
+                    {
+                        builder.append(viewId.substring(0,viewId.lastIndexOf(".")));
+                    }
+                    else
+                    {
+                        builder.append(viewId);
+                    }
+                    builder.append(contextSuffixes[0]);
+                }
+            }
+            else
+            {
+                builder.append(mapping.getPrefix());
+                builder.append(viewId);
+            }
+        }
+        else
+        {
+            builder.append(viewId);
+        }
+        String calculatedActionURL = builder.toString();
+        if (log.isLoggable(Level.FINEST))
+        {
+            log.finest("Calculated actionURL: '" + calculatedActionURL + "' for viewId: '" + viewId + "'");
+        }
+        return calculatedActionURL;
+    }
+
+    /**
+     * Read the web.xml file that is in the classpath and parse its internals to
+     * figure out how the FacesServlet is mapped for the current webapp.
+     */
+    protected FacesServletMapping getFacesServletMapping(FacesContext context)
+    {
+        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+
+        // Has the mapping already been determined during this request?
+        if (!requestMap.containsKey(CACHED_SERVLET_MAPPING))
+        {
+            ExternalContext externalContext = context.getExternalContext();
+            FacesServletMapping mapping =
+                calculateFacesServletMapping(
+                    externalContext.getRequestServletPath(),
+                    externalContext.getRequestPathInfo());
+
+            requestMap.put(CACHED_SERVLET_MAPPING, mapping);
+        }
+
+        return (FacesServletMapping) requestMap.get(CACHED_SERVLET_MAPPING);
+    }
+
+    /**
+     * Determines the mapping of the FacesServlet in the web.xml configuration
+     * file. However, there is no need to actually parse this configuration file
+     * as runtime information is sufficient.
+     *
+     * @param servletPath The servletPath of the current request
+     * @param pathInfo    The pathInfo of the current request
+     * @return the mapping of the FacesServlet in the web.xml configuration file
+     */
+    protected static FacesServletMapping calculateFacesServletMapping(
+        String servletPath, String pathInfo)
+    {
+        if (pathInfo != null)
+        {
+            // If there is a "extra path", it's definitely no extension mapping.
+            // Now we just have to determine the path which has been specified
+            // in the url-pattern, but that's easy as it's the same as the
+            // current servletPath. It doesn't even matter if "/*" has been used
+            // as in this case the servletPath is just an empty string according
+            // to the Servlet Specification (SRV 4.4).
+            return FacesServletMapping.createPrefixMapping(servletPath);
+        }
+        else
+        {
+            // In the case of extension mapping, no "extra path" is available.
+            // Still it's possible that prefix-based mapping has been used.
+            // Actually, if there was an exact match no "extra path"
+            // is available (e.g. if the url-pattern is "/faces/*"
+            // and the request-uri is "/context/faces").
+            int slashPos = servletPath.lastIndexOf('/');
+            int extensionPos = servletPath.lastIndexOf('.');
+            if (extensionPos > -1 && extensionPos > slashPos)
+            {
+                String extension = servletPath.substring(extensionPos);
+                return FacesServletMapping.createExtensionMapping(extension);
+            }
+            else
+            {
+                // There is no extension in the given servletPath and therefore
+                // we assume that it's an exact match using prefix-based mapping.
+                return FacesServletMapping.createPrefixMapping(servletPath);
+            }
+        }
+    }
+
+    protected String[] getContextSuffix(FacesContext context)
+    {
+        String defaultSuffix = context.getExternalContext().getInitParameter(ViewHandler.DEFAULT_SUFFIX_PARAM_NAME);
+        if (defaultSuffix == null)
+        {
+            defaultSuffix = ViewHandler.DEFAULT_SUFFIX;
+        }
+        return defaultSuffix.split(" ");
+    }
+    
+    protected String getFaceletsContextSuffix(FacesContext context)
+    {
+        String defaultSuffix = context.getExternalContext().getInitParameter(ViewHandler.FACELETS_SUFFIX_PARAM_NAME);
+        if (defaultSuffix == null)
+        {
+            defaultSuffix = ViewHandler.DEFAULT_FACELETS_SUFFIX;
+        }
+        return defaultSuffix;
+    }
+    
+    
+    
+    protected String[] getFaceletsViewMappings(FacesContext context)
+    {
+        String faceletsViewMappings= context.getExternalContext().getInitParameter(ViewHandler.FACELETS_VIEW_MAPPINGS_PARAM_NAME);
+        if(faceletsViewMappings == null)    //consider alias facelets.VIEWMAPPINGS
+        {
+            faceletsViewMappings= context.getExternalContext().getInitParameter("facelets.VIEWMAPPINGS");
+        }
+        
+        return faceletsViewMappings == null ? null : faceletsViewMappings.split(";");
+    }
+
+    /**
+     * Return the normalized viewId according to the algorithm specified in 7.5.2 
+     * by stripping off any number of occurrences of the prefix mapping from the viewId.
+     * <p/>
+     * For example, both /faces/view.xhtml and /faces/faces/faces/view.xhtml would both return view.xhtml
+     * F 
+     */
+    protected String handlePrefixMapping(String viewId, String prefix)
+    {
+        // If prefix mapping (such as "/faces/*") is used for FacesServlet, 
+        // normalize the viewId according to the following
+        // algorithm, or its semantic equivalent, and return it.
+               
+        // Remove any number of occurrences of the prefix mapping from the viewId. 
+        // For example, if the incoming value was /faces/faces/faces/view.xhtml 
+        // the result would be simply view.xhtml.
+        
+        if ("".equals(prefix))
+        {
+            // if prefix is an empty string (Spring environment), we let it be "//"
+            // in order to prevent an infinite loop in uri.startsWith(-emptyString-).
+            // Furthermore a prefix of "//" is just another double slash prevention.
+            prefix = "//";
+        }
+        else
+        {
+            // need to make sure its really /faces/* and not /facesPage.xhtml
+            prefix = prefix + '/'; 
+        }
+        
+        String uri = viewId;
+        while (uri.startsWith(prefix) || uri.startsWith("//")) 
+        {
+            if (uri.startsWith(prefix))
+            {
+                // cut off only /faces, leave the trailing '/' char for the next iteration
+                uri = uri.substring(prefix.length() - 1);
+            }
+            else
+            {
+                // uri starts with '//' --> cut off the leading slash, leaving
+                // the second slash to compare for the next iteration
+                uri = uri.substring(1);
+            }
+        }
+        
+        //now delete any remaining leading '/'
+        // TODO: CJH: I don't think this is correct, considering that getActionURL() expects everything to
+        // start with '/', and in the suffix case we only mess with the suffix and leave leading
+        // slashes alone.  Please review...
+        /*if(uri.startsWith("/"))
+        {
+            uri = uri.substring(1);
+        }*/
+        
+        return uri;
+    }
+    
+    /**
+     * Return the viewId with any non-standard suffix stripped off and replaced with
+     * the default suffix configured for the specified context.
+     * <p/>
+     * For example, an input parameter of "/foo.jsf" may return "/foo.jsp".
+     */
+    protected String handleSuffixMapping(FacesContext context, String requestViewId)
+    {
+        String[] faceletsViewMappings = getFaceletsViewMappings(context);
+        String[] jspDefaultSuffixes = getContextSuffix(context);
+        
+        int slashPos = requestViewId.lastIndexOf('/');
+        int extensionPos = requestViewId.lastIndexOf('.');
+        
+        //Try to locate any resource that match with the expected id
+        for (String defaultSuffix : jspDefaultSuffixes)
+        {
+            StringBuilder builder = new StringBuilder(requestViewId);
+           
+            if (extensionPos > -1 && extensionPos > slashPos)
+            {
+                builder.replace(extensionPos, requestViewId.length(), defaultSuffix);
+            }
+            else
+            {
+                builder.append(defaultSuffix);
+            }
+            String candidateViewId = builder.toString();
+            
+            if( faceletsViewMappings != null && faceletsViewMappings.length > 0 )
+            {
+                for (String mapping : faceletsViewMappings)
+                {
+                    if(mapping.startsWith("/"))
+                    {
+                        continue;   //skip this entry, its a prefix mapping
+                    }
+                    if(mapping.equals(candidateViewId))
+                    {
+                        return candidateViewId;
+                    }
+                    if(mapping.startsWith(".")) //this is a wildcard entry
+                    {
+                        builder.setLength(0); //reset/reuse the builder object 
+                        builder.append(candidateViewId); 
+                        builder.replace(candidateViewId.lastIndexOf('.'), candidateViewId.length(), mapping);
+                        String tempViewId = builder.toString();
+                        if(checkResourceExists(context,tempViewId))
+                            return tempViewId;
+                    }
+                }
+            }
+
+            // forced facelets mappings did not match or there were no entries in faceletsViewMappings array
+            if(checkResourceExists(context,candidateViewId))
+                return candidateViewId;
+        
+        }
+        
+        //jsp suffixes didn't match, try facelets suffix
+        String faceletsDefaultSuffix = this.getFaceletsContextSuffix(context);
+        if (faceletsDefaultSuffix != null)
+        {
+            for (String defaultSuffix : jspDefaultSuffixes)
+            {
+                if (faceletsDefaultSuffix.equals(defaultSuffix))
+                {
+                    faceletsDefaultSuffix = null;
+                    break;
+                }
+            }
+        }
+        if (faceletsDefaultSuffix != null)
+        {
+            StringBuilder builder = new StringBuilder(requestViewId);
+            
+            if (extensionPos > -1 && extensionPos > slashPos)
+            {
+                builder.replace(extensionPos, requestViewId.length(), faceletsDefaultSuffix);
+            }
+            else
+            {
+                builder.append(faceletsDefaultSuffix);
+            }
+            
+            String candidateViewId = builder.toString();
+            if(checkResourceExists(context,candidateViewId))
+                return candidateViewId;
+        }
+
+        // Otherwise, if a physical resource exists with the name requestViewId let that value be viewId.
+        if(checkResourceExists(context,requestViewId))
+            return requestViewId;
+        
+        //Otherwise return null.
+        return null;
+    }
+    
+    protected boolean checkResourceExists(FacesContext context, String viewId)
+    {
+        try
+        {
+            if (isCheckedViewIdCachingEnabled(context))
+            {
+                Boolean resourceExists = getCheckedViewIDMap(context).get(
+                        viewId);
+                if (resourceExists == null)
+                {
+                    ViewDeclarationLanguage vdl = context.getApplication().getViewHandler().getViewDeclarationLanguage(context, viewId);
+                    if (vdl != null)
+                    {
+                        resourceExists = vdl.viewExists(context, viewId);
+                    }
+                    else
+                    {
+                        // Fallback to default strategy
+                        resourceExists = context.getExternalContext().getResource(
+                                viewId) != null;
+                    }
+                    getCheckedViewIDMap(context).put(viewId, resourceExists);
+                }
+                return resourceExists;
+            }
+            else
+            {
+                ViewDeclarationLanguage vdl = context.getApplication().getViewHandler().getViewDeclarationLanguage(context, viewId);
+                if (vdl != null)
+                {
+                    if (vdl.viewExists(context, viewId))
+                    {
+                        return true;
+                    }
+                }
+                else
+                {
+                    // Fallback to default strategy
+                    if (context.getExternalContext().getResource(viewId) != null)
+                    {
+                        return true;
+                    }
+                }
+            }
+        }
+        catch(MalformedURLException e)
+        {
+            //ignore and move on
+        }     
+        return false;
+    }
+
+    private Map<String, Boolean> getCheckedViewIDMap(FacesContext context)
+    {
+        if (_checkedViewIdMap == null)
+        {
+            _checkedViewIdMap = Collections.synchronizedMap(new _CheckedViewIDMap<String, Boolean>(getViewIDCacheMaxSize(context)));
+        }
+        return _checkedViewIdMap;
+    }
+
+    private boolean isCheckedViewIdCachingEnabled(FacesContext context)
+    {
+        if (_checkedViewIdCacheEnabled == null)
+        {
+            // first, check if the ProjectStage is development and skip caching in this case
+            if (context.isProjectStage(ProjectStage.Development))
+            {
+                _checkedViewIdCacheEnabled = Boolean.FALSE;
+            }
+            else
+            {
+                // in all ohter cases, make sure that the cache is not explicitly disabled via context param
+                _checkedViewIdCacheEnabled = WebConfigParamUtils.getBooleanInitParameter(context.getExternalContext(),
+                        CHECKED_VIEWID_CACHE_ENABLED_ATTRIBUTE,
+                        CHECKED_VIEWID_CACHE_ENABLED_DEFAULT);
+            }
+
+            if (log.isLoggable(Level.FINE))
+            {
+                log.log(Level.FINE, "MyFaces ViewID Caching Enabled="
+                        + _checkedViewIdCacheEnabled);
+            }
+        }
+        return _checkedViewIdCacheEnabled;
+    }
+
+    private int getViewIDCacheMaxSize(FacesContext context)
+    {
+        ExternalContext externalContext = context.getExternalContext();
+
+        return WebConfigParamUtils.getIntegerInitParameter(externalContext,
+                CHECKED_VIEWID_CACHE_SIZE_ATTRIBUTE, CHECKED_VIEWID_CACHE_DEFAULT_SIZE);
+    }
+
+    private class _CheckedViewIDMap<K, V> extends LinkedHashMap<K, V>
+    {
+        private static final long serialVersionUID = 1L;
+        private int maxCapacity;
+
+        public _CheckedViewIDMap(int cacheSize)
+        {
+            // create map at max capacity and 1.1 load factor to avoid rehashing
+            super(cacheSize + 1, 1.1f, true);
+            maxCapacity = cacheSize;
+        }
+
+        @Override
+        protected boolean removeEldestEntry(Map.Entry<K, V> eldest)
+        {
+            return size() > maxCapacity;
+        }
+    }
+}
\ No newline at end of file
diff --git a/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMapping.java b/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMapping.java
new file mode 100644
index 0000000..99fe26a
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMapping.java
@@ -0,0 +1,158 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.application;
+
+/**
+ * Represents a mapping entry of the FacesServlet in the web.xml
+ * configuration file.
+ */
+public class FacesServletMapping
+{
+
+    /**
+     * The path ("/faces", for example) which has been specified in the
+     * url-pattern of the FacesServlet mapping.
+     */
+    private String prefix;
+
+    /**
+     * The extension (".jsf", for example) which has been specified in the
+     * url-pattern of the FacesServlet mapping.
+     */
+    private String extension;
+
+    /**
+     * Creates a new FacesServletMapping object using prefix mapping.
+     *
+     * @param path The path ("/faces", for example) which has been specified
+     *             in the url-pattern of the FacesServlet mapping.
+     * @return a newly created FacesServletMapping
+     */
+    public static FacesServletMapping createPrefixMapping(String path)
+    {
+        FacesServletMapping mapping = new FacesServletMapping();
+        mapping.setPrefix(path);
+        return mapping;
+    }
+
+    /**
+     * Creates a new FacesServletMapping object using extension mapping.
+     *
+     * @param path The extension (".jsf", for example) which has been
+     *             specified in the url-pattern of the FacesServlet mapping.
+     * @return a newly created FacesServletMapping
+     */
+    public static FacesServletMapping createExtensionMapping(
+        String extension)
+    {
+        FacesServletMapping mapping = new FacesServletMapping();
+        mapping.setExtension(extension);
+        return mapping;
+    }
+
+    /**
+     * Returns the path ("/faces", for example) which has been specified in
+     * the url-pattern of the FacesServlet mapping. If this mapping is based
+     * on an extension, <code>null</code> will be returned. Note that this
+     * path is not the same as the specified url-pattern as the trailing
+     * "/*" is omitted.
+     *
+     * @return the path which has been specified in the url-pattern
+     */
+    public String getPrefix()
+    {
+        return prefix;
+    }
+
+    /**
+     * Sets the path ("/faces/", for example) which has been specified in
+     * the url-pattern.
+     *
+     * @param path The path which has been specified in the url-pattern
+     */
+    public void setPrefix(String path)
+    {
+        this.prefix = path;
+    }
+
+    /**
+     * Returns the extension (".jsf", for example) which has been specified
+     * in the url-pattern of the FacesServlet mapping. If this mapping is
+     * not based on an extension, <code>null</code> will be returned.
+     *
+     * @return the extension which has been specified in the url-pattern
+     */
+    public String getExtension()
+    {
+        return extension;
+    }
+
+    /**
+     * Sets the extension (".jsf", for example) which has been specified in
+     * the url-pattern of the FacesServlet mapping.
+     *
+     * @param extension The extension which has been specified in the url-pattern
+     */
+    public void setExtension(String extension)
+    {
+        this.extension = extension;
+    }
+
+    /**
+     * Indicates whether this mapping is based on an extension (e.g.
+     * ".jsp").
+     *
+     * @return <code>true</code>, if this mapping is based is on an
+     *         extension, <code>false</code> otherwise
+     */
+    public boolean isExtensionMapping()
+    {
+        return extension != null;
+    }
+
+    /**
+     * Indicates whether this mapping is based on a prefix (e.g.
+     * /faces/*").
+     *
+     * @return <code>true</code>, if this mapping is based is on a
+     *         prefix, <code>false</code> otherwise
+     */
+    public boolean isPrefixMapping()
+    {
+        return prefix != null;
+    }
+    
+    /**
+     * Returns the url-pattern entry for this servlet mapping.
+     *
+     * @return the url-pattern entry for this servlet mapping
+     */
+    public String getUrlPattern()
+    {
+        if (isExtensionMapping())
+        {
+            return "*" + extension;
+        }
+        else
+        {
+            return prefix + "/*";
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/shared/src/main/java/org/apache/myfaces/shared/application/InvalidViewIdException.java b/shared/src/main/java/org/apache/myfaces/shared/application/InvalidViewIdException.java
new file mode 100644
index 0000000..9e1f205
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/application/InvalidViewIdException.java
@@ -0,0 +1,64 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.application;
+
+/**
+ * @author Mathias Broekelmann (latest modification by $Author: mbr $)
+ * @version $Revision: 517404 $ $Date: 2007-03-12 15:17:24 -0600 (Mon, 12 Mar 2007) $
+ */
+public class InvalidViewIdException extends RuntimeException
+{
+
+    /**
+     * 
+     */
+    public InvalidViewIdException()
+    {
+        // TODO Auto-generated constructor stub
+    }
+
+    /**
+     * @param message
+     */
+    public InvalidViewIdException(String message)
+    {
+        super(message);
+        // TODO Auto-generated constructor stub
+    }
+
+    /**
+     * @param cause
+     */
+    public InvalidViewIdException(Throwable cause)
+    {
+        super(cause);
+        // TODO Auto-generated constructor stub
+    }
+
+    /**
+     * @param message
+     * @param cause
+     */
+    public InvalidViewIdException(String message, Throwable cause)
+    {
+        super(message, cause);
+        // TODO Auto-generated constructor stub
+    }
+
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/application/ViewHandlerSupport.java b/shared/src/main/java/org/apache/myfaces/shared/application/ViewHandlerSupport.java
new file mode 100644
index 0000000..cdb4774
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/application/ViewHandlerSupport.java
@@ -0,0 +1,49 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.application;
+
+import javax.faces.context.FacesContext;
+
+/**
+ * TODO: RENAME - This class is now used by ViewDeclarationLanguageBase
+ * 
+ * A utility class to isolate a ViewHandler implementation from the underlying 
+ * request/response framework.
+ * <p>
+ * For example, an implementation of this interface might support javax.servlet,
+ * javax.portlet, or some other mechanism.
+ *    
+ * @author Mathias Broekelmann (latest modification by $Author: lu4242 $)
+ * @version $Revision: 887436 $ $Date: 2009-12-04 16:11:25 -0700 (Fri, 04 Dec 2009) $
+ */
+public interface ViewHandlerSupport
+{
+    String calculateViewId(FacesContext context, String viewId);
+    
+    String calculateAndCheckViewId(FacesContext context, String viewId);
+
+    /**
+     * Return a string containing a webapp-relative URL that the user can invoke
+     * to render the specified view.
+     * <p>
+     * URLs and ViewIds are not quite the same; for example a url of "/foo.jsf"
+     * or "/faces/foo.jsp" may be needed to access the view "/foo.jsp". 
+     */
+    String calculateActionURL(FacesContext facesContext, String viewId); 
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/component/BindingAware.java b/shared/src/main/java/org/apache/myfaces/shared/component/BindingAware.java
new file mode 100644
index 0000000..3161d02
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/component/BindingAware.java
@@ -0,0 +1,24 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.component;
+
+public interface BindingAware
+{
+    void handleBindings();
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/component/DisplayValueOnlyCapable.java b/shared/src/main/java/org/apache/myfaces/shared/component/DisplayValueOnlyCapable.java
new file mode 100644
index 0000000..c05be7b
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/component/DisplayValueOnlyCapable.java
@@ -0,0 +1,47 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.component;
+
+/**
+ * Behavioral interface.
+ * By default, displayValueOnly is false, and the components have the default behaviour.
+ * When displayValueOnly is true, the renderer should not render any input widget.
+ * Only the text corresponding to the component's value should be rendered instead.
+ * 
+ * @author Sylvain Vieujot (latest modification by $Author: svieujot $)
+ * @author Martin Marinschek
+ *
+ * @version $Revision: 169739 $ $Date: 2005-05-12 02:45:14 +0200 (Thu, 12 May 2005) $
+ */
+public interface DisplayValueOnlyCapable
+{
+    String DISPLAY_VALUE_ONLY_ATTR = "displayValueOnly";
+    String DISPLAY_VALUE_ONLY_STYLE_ATTR = "displayValueOnlyStyle";
+    String DISPLAY_VALUE_ONLY_STYLE_CLASS_ATTR = "displayValueOnlyStyleClass";
+    
+    boolean isSetDisplayValueOnly();
+    boolean isDisplayValueOnly();
+    void setDisplayValueOnly(boolean displayValueOnly);
+
+    String getDisplayValueOnlyStyle();
+    void setDisplayValueOnlyStyle(String style);
+    
+    String getDisplayValueOnlyStyleClass();
+    void setDisplayValueOnlyStyleClass(String styleClass);
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/component/EscapeCapable.java b/shared/src/main/java/org/apache/myfaces/shared/component/EscapeCapable.java
new file mode 100644
index 0000000..553ed98
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/component/EscapeCapable.java
@@ -0,0 +1,32 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.component;
+
+/**
+ * EscapeCapable interface for extended components
+ * By default, escape is true, and the components have the default behaviour.
+ * When escape is false, the renderer should not escape output.
+ *
+ * @author Grant Smith (latest modification by $Author: grantsmith $)
+ */
+
+public interface EscapeCapable {
+    boolean isEscape();
+    void setEscape(boolean escape);
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/component/ExecuteOnCallback.java b/shared/src/main/java/org/apache/myfaces/shared/component/ExecuteOnCallback.java
new file mode 100644
index 0000000..baba0d1
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/component/ExecuteOnCallback.java
@@ -0,0 +1,36 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.component;
+
+import javax.faces.context.FacesContext;
+import javax.faces.component.UIComponent;
+
+/**
+ * With findComponent - you get a component, but this component might
+ * not be prepared to actually have the correct context information. This
+ * is important for e.g. DataTables. They'll need to prepare the component
+ * with the current row-state to make sure that the method is executed
+ * correctly.
+ *
+ * @author Martin Marinschek (latest modification by $Author$)
+ */
+public interface ExecuteOnCallback
+{
+    Object execute(FacesContext context, UIComponent component);
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java b/shared/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java
new file mode 100755
index 0000000..0172d5d
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java
@@ -0,0 +1,848 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.config;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.context.ExternalContext;
+import javax.servlet.ServletContext;
+
+import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
+import org.apache.myfaces.shared.util.ClassUtils;
+
+/**
+ * Holds all configuration init parameters (from web.xml) that are independent
+ * from the core implementation. The parameters in this class are available to
+ * all shared, component and implementation classes.
+ * See RuntimeConfig for configuration infos that come from the faces-config
+ * files and are needed by the core implementation.
+ *
+ * MyfacesConfig is meant for components that implement some of the extended features
+ * of MyFaces. Anyhow, using the MyFaces JSF implementation is no precondition for using
+ * MyfacesConfig in custom components. Upon using another JSF implementation
+ * (or omitting the extended init parameters) all config properties will simply have
+ * their default values.
+ *
+ * @author Manfred Geiler (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class MyfacesConfig
+{
+    //private static final Log log = LogFactory.getLog(MyfacesConfig.class);
+    private static final Logger log = Logger.getLogger(MyfacesConfig.class.getName());
+
+    private static final String APPLICATION_MAP_PARAM_NAME = MyfacesConfig.class.getName();
+
+    public static final String  INIT_PARAM_RESOURCE_VIRTUAL_PATH = "org.apache.myfaces.RESOURCE_VIRTUAL_PATH";
+    public static final String  INIT_PARAM_RESOURCE_VIRTUAL_PATH_DEFAULT = "/faces/myFacesExtensionResource";
+
+    /**
+     * 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"
+     */
+    @JSFWebConfigParam(defaultValue="true", expectedValues="true,false",since="1.1")
+    private static final String  INIT_PARAM_PRETTY_HTML = "org.apache.myfaces.PRETTY_HTML";
+    private static final boolean INIT_PARAM_PRETTY_HTML_DEFAULT = true;
+
+    /**
+     * 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"
+     */
+    @JSFWebConfigParam(defaultValue="true", expectedValues="true,false",since="1.1")
+    private static final String  INIT_PARAM_ALLOW_JAVASCRIPT = "org.apache.myfaces.ALLOW_JAVASCRIPT";
+    private static final boolean INIT_PARAM_ALLOW_JAVASCRIPT_DEFAULT = true;
+
+    /**
+     * 
+     */
+    @JSFWebConfigParam(defaultValue="false", expectedValues="true,false",since="1.1")
+    private static final String  INIT_PARAM_DETECT_JAVASCRIPT = "org.apache.myfaces.DETECT_JAVASCRIPT";
+    private static final boolean INIT_PARAM_DETECT_JAVASCRIPT_DEFAULT = 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"
+     */
+    @JSFWebConfigParam(defaultValue="false", expectedValues="true,false",since="1.1")
+    private static final String  INIT_PARAM_AUTO_SCROLL = "org.apache.myfaces.AUTO_SCROLL";
+    private static final boolean INIT_PARAM_AUTO_SCROLL_DEFAULT = false;
+
+    /**
+     * Tomahawk specific: A class implementing the
+     * org.apache.myfaces.shared.renderkit.html.util.AddResource
+     * interface. It is responsible to
+     * place scripts and css on the right position in your HTML document.
+     * Default: "org.apache.myfaces.shared.renderkit.html.util.DefaultAddResource"
+     * Follow the description on the MyFaces-Wiki-Performance page to enable
+     * StreamingAddResource instead of DefaultAddResource if you want to
+     * gain performance.
+     */
+    @JSFWebConfigParam(defaultValue="org.apache.myfaces.renderkit.html.util.DefaultAddResource",since="1.1")
+    private static final String INIT_PARAM_ADD_RESOURCE_CLASS = "org.apache.myfaces.ADD_RESOURCE_CLASS";
+    private static final String INIT_PARAM_ADD_RESOURCE_CLASS_DEFAULT = "org.apache.myfaces.renderkit.html.util.DefaultAddResource";
+
+    /**
+     * Tomahawk specific: A very common problem in configuring MyFaces-web-applications
+     * is that the Extensions-Filter is not configured at all
+     * or improperly configured. This parameter will check for a properly
+     * configured Extensions-Filter if it is needed by the web-app.
+     * In most cases this check will work just fine, there might be cases
+     * where an internal forward will bypass the Extensions-Filter and the check
+     * will not work. If this is the case, you can disable the check by setting
+     * this parameter to false.
+     * 
+     * In tomahawk for JSF 2.0 since version 1.1.11, this param is set by default to false, otherwise is true.
+     */
+    @JSFWebConfigParam(defaultValue="for JSF 2.0 since 1.1.11 false, otherwise true", expectedValues="true,false",since="1.1")
+    private static final String  INIT_CHECK_EXTENSIONS_FILTER = "org.apache.myfaces.CHECK_EXTENSIONS_FILTER";
+    private static final boolean INIT_CHECK_EXTENSIONS_FILTER_DEFAULT = false;
+
+    /**
+     * 
+     */
+    @JSFWebConfigParam(defaultValue="true", expectedValues="true,false",since="1.1")
+    private static final String INIT_READONLY_AS_DISABLED_FOR_SELECT = "org.apache.myfaces.READONLY_AS_DISABLED_FOR_SELECTS";
+    private static final boolean INIT_READONLY_AS_DISABLED_FOR_SELECT_DEFAULT = true;
+
+    /**
+     * 
+     */
+    @JSFWebConfigParam(defaultValue="2",since="1.1")
+    public static final String INIT_PARAM_CONFIG_REFRESH_PERIOD = "org.apache.myfaces.CONFIG_REFRESH_PERIOD";
+    public static final long INIT_PARAM_CONFIG_REFRESH_PERIOD_DEFAULT = 2;
+
+    /**
+     * 
+     */
+    @JSFWebConfigParam(defaultValue="false", expectedValues="true,false",since="1.1")
+    private static final String  INIT_PARAM_VIEWSTATE_JAVASCRIPT = "org.apache.myfaces.VIEWSTATE_JAVASCRIPT";
+    private static final boolean INIT_PARAM_VIEWSTATE_JAVASCRIPT_DEFAULT = false;
+
+    /**
+     * 
+     */
+    @JSFWebConfigParam(defaultValue="true", expectedValues="true,false",since="1.1")
+    private static final String  INIT_PARAM_RENDER_VIEWSTATE_ID = "org.apache.myfaces.RENDER_VIEWSTATE_ID";
+    private static final boolean INIT_PARAM_RENDER_VIEWSTATE_ID_DEFAULT = true;
+
+    /**
+     * 
+     */
+    @JSFWebConfigParam(defaultValue="true", expectedValues="true,false",since="1.1")
+    private static final String  INIT_PARAM_STRICT_XHTML_LINKS = "org.apache.myfaces.STRICT_XHTML_LINKS";
+    private static final boolean INIT_PARAM_STRICT_XHTML_LINKS_DEFAULT = true;
+    
+    /**
+     * 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.
+     */
+    @JSFWebConfigParam(defaultValue="false", expectedValues="true,false",since="1.2.3")
+    private static final String INIT_PARAM_RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON = "org.apache.myfaces.RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON";
+    private static final boolean INIT_PARAM_RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON_DEFAULT= 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 6, because in this environment,
+     * document.createElement() and form.appendChild() javascript methods are not supported.
+     */
+    @JSFWebConfigParam(defaultValue="false", expectedValues="true,false",since="1.2.9")
+    private static final String INIT_PARAM_RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS = "org.apache.myfaces.RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS";
+    private static final boolean INIT_PARAM_RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS_DEFAULT= 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.
+     */
+    @JSFWebConfigParam(defaultValue="false", expectedValues="true,false",since="1.1")
+    private static final String INIT_PARAM_SAVE_FORM_SUBMIT_LINK_IE = "org.apache.myfaces.SAVE_FORM_SUBMIT_LINK_IE";
+    private static final boolean INIT_PARAM_SAVE_FORM_SUBMIT_LINK_IE_DEFAULT = false;
+    
+    /**
+     * 
+     */
+    @JSFWebConfigParam(since="1.2.7")
+    private static final String INIT_PARAM_DELEGATE_FACES_SERVLET = "org.apache.myfaces.DELEGATE_FACES_SERVLET";
+
+    /**
+     * This param is only valid when partial state saving is on.
+     * If this is set as true, the tag-handlers are reapplied like in facelets 1.1.x, allowing
+     * c:if work correctly to "toggle" components based on a value changed on invoke application phase. 
+     */
+    @JSFWebConfigParam(since="2.0", defaultValue="auto", expectedValues="true,false,auto")
+    public final static String INIT_PARAM_REFRESH_TRANSIENT_BUILD_ON_PSS = "org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS"; 
+    public final static String INIT_PARAM_REFRESH_TRANSIENT_BUILD_ON_PSS_DEFAULT = "auto";
+
+    /**
+     * This param is only valid when partial state saving is on.
+     * If this is set as true, parent components containing  c:if, c:forEach, 
+     * c:choose and ui:insert with src=ELExpression are marked to be restored fully, so state
+     * is preserved between request.
+     */
+    @JSFWebConfigParam(since="2.0", defaultValue="false")
+    public final static String INIT_PARAM_REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE = "org.apache.myfaces.REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE";
+    public final static boolean INIT_PARAM_REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE_DEFAULT = false;
+    
+    /**
+     * if set to <code>true</code>, tag library XML files and faces config XML files using schema 
+     * will be validated during application start up
+     */
+    @JSFWebConfigParam(since="2.0", expectedValues="true,false")
+    public final static String INIT_PARAM_VALIDATE_XML = "org.apache.myfaces.VALIDATE_XML";
+    public final static boolean INIT_PARAM_VALIDATE_XML_DEFAULT = false;
+    
+    /**
+     * Wrap content inside script with xml comment to prevent old browsers to display it. By default it is true. 
+     */
+    @JSFWebConfigParam(since="2.0.1", expectedValues="true,false", defaultValue="true")
+    public final static String INIT_PARAM_WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG = "org.apache.myfaces.WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG";
+    public final static boolean INIT_PARAM_WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG_DEFAULT = true;
+    
+    /**
+     * If set true, render the form submit script inline, as in myfaces core 1.2 and earlier versions 
+     */
+    @JSFWebConfigParam(since="2.0.2", expectedValues="true,false", defaultValue="false")
+    public final static String INIT_PARAM_RENDER_FORM_SUBMIT_SCRIPT_INLINE = "org.apache.myfaces.RENDER_FORM_SUBMIT_SCRIPT_INLINE";
+    public final static boolean INIT_PARAM_RENDER_FORM_SUBMIT_SCRIPT_INLINE_DEFAULT = false;
+    
+    /**
+     * Enable/disable DebugPhaseListener feature, with provide useful information about ValueHolder variables (submittedValue, localValue, value).
+     * Note evaluate those getters for each component could cause some unwanted side effects when using "access" type scopes like on MyFaces CODI.
+     * This param only has effect when project stage is Development.     
+     */
+    @JSFWebConfigParam(since="2.0.8")
+    public final static String INIT_PARAM_DEBUG_PHASE_LISTENER = "org.apache.myfaces.DEBUG_PHASE_LISTENER";
+    public final static boolean INIT_PARAM_DEBUG_PHASE_LISTENER_DEFAULT = false;
+    
+    private boolean _prettyHtml;
+    private boolean _detectJavascript;
+    private boolean _allowJavascript;
+    private boolean _autoScroll;
+    private String _addResourceClass;
+    private String _resourceVirtualPath;
+    private boolean _checkExtensionsFilter;
+    private boolean _readonlyAsDisabledForSelect;
+    private long _configRefreshPeriod;
+    private boolean _viewStateJavascript;
+    private boolean _renderViewStateId;
+    private boolean _strictXhtmlLinks;
+    private boolean _renderClearJavascriptOnButton;
+    private boolean renderHiddenFieldsForLinkParams;
+    private boolean _saveFormSubmitLinkIE;
+    private String _delegateFacesServlet;
+    private boolean _refreshTransientBuildOnPSS;
+    private boolean _refreshTransientBuildOnPSSAuto;
+    private boolean refreshTransientBuildOnPSSPreserveState;
+    private boolean _validateXML;
+    private boolean _wrapScriptContentWithXmlCommentTag;
+    private boolean _renderFormSubmitScriptInline;
+    private boolean _debugPhaseListenerEnabled;
+
+    private static final boolean TOMAHAWK_AVAILABLE;
+    private static final boolean MYFACES_IMPL_AVAILABLE;
+    private static final boolean RI_IMPL_AVAILABLE;
+
+    static
+    {
+        boolean tomahawkAvailable;
+        try
+        {
+            ClassUtils.classForName("org.apache.myfaces.webapp.filter.ExtensionsFilter");
+            tomahawkAvailable = true;
+        }
+        catch (ClassNotFoundException e)
+        {
+            tomahawkAvailable = false;
+        }
+        TOMAHAWK_AVAILABLE = tomahawkAvailable;
+    }
+
+    static
+    {
+        boolean myfacesImplAvailable;
+        try
+        {
+            ClassUtils.classForName("org.apache.myfaces.application.ApplicationImpl");
+            myfacesImplAvailable = true;
+        }
+        catch (ClassNotFoundException e)
+        {
+            myfacesImplAvailable = false;
+        }
+        MYFACES_IMPL_AVAILABLE = myfacesImplAvailable;
+    }
+
+    static
+    {
+        boolean riImplAvailable;
+        try
+        {
+            ClassUtils.classForName("com.sun.faces.application.ApplicationImpl");
+            riImplAvailable = true;
+        }
+        catch (ClassNotFoundException e)
+        {
+            riImplAvailable = false;
+        }
+        RI_IMPL_AVAILABLE = riImplAvailable;
+    }
+
+    public static MyfacesConfig getCurrentInstance(ExternalContext extCtx)
+    {
+        MyfacesConfig myfacesConfig = (MyfacesConfig) extCtx
+                .getApplicationMap().get(APPLICATION_MAP_PARAM_NAME);
+        if (myfacesConfig == null)
+        {
+
+            myfacesConfig = createAndInitializeMyFacesConfig(extCtx);
+
+            extCtx.getApplicationMap().put(APPLICATION_MAP_PARAM_NAME, myfacesConfig);
+
+        }
+
+        return myfacesConfig;
+    }
+    
+    public MyfacesConfig()
+    {
+        setPrettyHtml(INIT_PARAM_PRETTY_HTML_DEFAULT);
+        setAllowJavascript(INIT_PARAM_ALLOW_JAVASCRIPT_DEFAULT);
+        setRenderClearJavascriptOnButton(INIT_PARAM_RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON_DEFAULT);
+        setRenderHiddenFieldsForLinkParams(INIT_PARAM_RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS_DEFAULT);
+        setSaveFormSubmitLinkIE(INIT_PARAM_SAVE_FORM_SUBMIT_LINK_IE_DEFAULT);
+        setReadonlyAsDisabledForSelect(INIT_READONLY_AS_DISABLED_FOR_SELECT_DEFAULT);
+        setRenderViewStateId(INIT_PARAM_RENDER_VIEWSTATE_ID_DEFAULT);
+        setStrictXhtmlLinks(INIT_PARAM_STRICT_XHTML_LINKS_DEFAULT);
+        setConfigRefreshPeriod(INIT_PARAM_CONFIG_REFRESH_PERIOD_DEFAULT);        
+        setViewStateJavascript(INIT_PARAM_VIEWSTATE_JAVASCRIPT_DEFAULT);        
+        setRefreshTransientBuildOnPSS(true);
+        setRefreshTransientBuildOnPSSAuto(true);
+        setRefreshTransientBuildOnPSSPreserveState(INIT_PARAM_REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE_DEFAULT);
+        setValidateXML(INIT_PARAM_VALIDATE_XML_DEFAULT);
+        setWrapScriptContentWithXmlCommentTag(INIT_PARAM_WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG_DEFAULT);
+        setDetectJavascript(INIT_PARAM_DETECT_JAVASCRIPT_DEFAULT);
+        setAutoScroll(INIT_PARAM_AUTO_SCROLL_DEFAULT);
+        setAddResourceClass(INIT_PARAM_ADD_RESOURCE_CLASS_DEFAULT);
+        setResourceVirtualPath(INIT_PARAM_RESOURCE_VIRTUAL_PATH_DEFAULT);
+        //The default is true but we'll let it false because it depends if 
+        //tomahawk is on classpath and no test environment is set
+        setCheckExtensionsFilter(false);
+        setRenderFormSubmitScriptInline(INIT_PARAM_RENDER_FORM_SUBMIT_SCRIPT_INLINE_DEFAULT);
+        setDebugPhaseListenerEnabled(INIT_PARAM_DEBUG_PHASE_LISTENER_DEFAULT);
+    }
+
+    private static MyfacesConfig createAndInitializeMyFacesConfig(ExternalContext extCtx) {
+        
+        MyfacesConfig myfacesConfig = new MyfacesConfig();
+
+        myfacesConfig.setPrettyHtml(getBooleanInitParameter(extCtx, INIT_PARAM_PRETTY_HTML,
+                                                            INIT_PARAM_PRETTY_HTML_DEFAULT));
+        myfacesConfig.setAllowJavascript(getBooleanInitParameter(extCtx, INIT_PARAM_ALLOW_JAVASCRIPT,
+                                                                 INIT_PARAM_ALLOW_JAVASCRIPT_DEFAULT));
+
+        myfacesConfig.setRenderClearJavascriptOnButton(getBooleanInitParameter(extCtx, INIT_PARAM_RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON,
+                                                            INIT_PARAM_RENDER_CLEAR_JAVASCRIPT_FOR_BUTTON_DEFAULT));
+
+        myfacesConfig.setRenderHiddenFieldsForLinkParams(getBooleanInitParameter(extCtx, INIT_PARAM_RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS,
+                INIT_PARAM_RENDER_HIDDEN_FIELDS_FOR_LINK_PARAMS_DEFAULT));
+
+        myfacesConfig.setSaveFormSubmitLinkIE(getBooleanInitParameter(extCtx, INIT_PARAM_SAVE_FORM_SUBMIT_LINK_IE,
+                                                            INIT_PARAM_SAVE_FORM_SUBMIT_LINK_IE_DEFAULT));
+        
+        myfacesConfig.setReadonlyAsDisabledForSelect(getBooleanInitParameter(extCtx, INIT_READONLY_AS_DISABLED_FOR_SELECT,
+                                                                 INIT_READONLY_AS_DISABLED_FOR_SELECT_DEFAULT));
+        myfacesConfig.setRenderViewStateId(getBooleanInitParameter(extCtx, INIT_PARAM_RENDER_VIEWSTATE_ID,
+                                                                   INIT_PARAM_RENDER_VIEWSTATE_ID_DEFAULT));
+        myfacesConfig.setStrictXhtmlLinks(getBooleanInitParameter(extCtx, INIT_PARAM_STRICT_XHTML_LINKS,
+                                                                  INIT_PARAM_STRICT_XHTML_LINKS_DEFAULT));
+        myfacesConfig.setRenderFormSubmitScriptInline(getBooleanInitParameter(extCtx, INIT_PARAM_RENDER_FORM_SUBMIT_SCRIPT_INLINE,
+                                                                  INIT_PARAM_RENDER_FORM_SUBMIT_SCRIPT_INLINE_DEFAULT));
+        
+        myfacesConfig.setConfigRefreshPeriod(getLongInitParameter(extCtx, INIT_PARAM_CONFIG_REFRESH_PERIOD,
+                INIT_PARAM_CONFIG_REFRESH_PERIOD_DEFAULT));
+
+        myfacesConfig.setViewStateJavascript(getBooleanInitParameter(extCtx, INIT_PARAM_VIEWSTATE_JAVASCRIPT,
+                INIT_PARAM_VIEWSTATE_JAVASCRIPT_DEFAULT));
+
+        myfacesConfig.setDelegateFacesServlet(extCtx.getInitParameter(INIT_PARAM_DELEGATE_FACES_SERVLET));
+        
+        String refreshTransientBuildOnPSS = getStringInitParameter(extCtx, INIT_PARAM_REFRESH_TRANSIENT_BUILD_ON_PSS, 
+                INIT_PARAM_REFRESH_TRANSIENT_BUILD_ON_PSS_DEFAULT);
+        
+        if (refreshTransientBuildOnPSS == null)
+        {
+            myfacesConfig.setRefreshTransientBuildOnPSS(false);
+            myfacesConfig.setRefreshTransientBuildOnPSSAuto(false);
+        }
+        else if ("auto".equalsIgnoreCase(refreshTransientBuildOnPSS))
+        {
+            myfacesConfig.setRefreshTransientBuildOnPSS(true);
+            myfacesConfig.setRefreshTransientBuildOnPSSAuto(true);
+        }
+        else if (refreshTransientBuildOnPSS.equalsIgnoreCase("true") || 
+                refreshTransientBuildOnPSS.equalsIgnoreCase("on") || 
+                refreshTransientBuildOnPSS.equalsIgnoreCase("yes"))
+        {
+            myfacesConfig.setRefreshTransientBuildOnPSS(true);
+            myfacesConfig.setRefreshTransientBuildOnPSSAuto(false);
+        }
+        else
+        {
+            myfacesConfig.setRefreshTransientBuildOnPSS(false);
+            myfacesConfig.setRefreshTransientBuildOnPSSAuto(false);
+        }
+        
+        myfacesConfig.setRefreshTransientBuildOnPSSPreserveState(getBooleanInitParameter(extCtx,
+                INIT_PARAM_REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE, 
+                INIT_PARAM_REFRESH_TRANSIENT_BUILD_ON_PSS_PRESERVE_STATE_DEFAULT));
+        
+        myfacesConfig.setValidateXML(getBooleanInitParameter(extCtx, INIT_PARAM_VALIDATE_XML, INIT_PARAM_VALIDATE_XML_DEFAULT));
+        
+        myfacesConfig.setWrapScriptContentWithXmlCommentTag(getBooleanInitParameter(extCtx, 
+                INIT_PARAM_WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG, INIT_PARAM_WRAP_SCRIPT_CONTENT_WITH_XML_COMMENT_TAG_DEFAULT));
+        
+        myfacesConfig.setDebugPhaseListenerEnabled(getBooleanInitParameter(extCtx, INIT_PARAM_DEBUG_PHASE_LISTENER,
+                INIT_PARAM_DEBUG_PHASE_LISTENER_DEFAULT));
+
+        if (TOMAHAWK_AVAILABLE)
+        {
+            myfacesConfig.setDetectJavascript(getBooleanInitParameter(extCtx, INIT_PARAM_DETECT_JAVASCRIPT,
+                    INIT_PARAM_DETECT_JAVASCRIPT_DEFAULT));
+            myfacesConfig.setAutoScroll(getBooleanInitParameter(extCtx, INIT_PARAM_AUTO_SCROLL,
+                    INIT_PARAM_AUTO_SCROLL_DEFAULT));
+                        
+            myfacesConfig.setAddResourceClass(getStringInitParameter(extCtx, INIT_PARAM_ADD_RESOURCE_CLASS,
+                    INIT_PARAM_ADD_RESOURCE_CLASS_DEFAULT));
+            myfacesConfig.setResourceVirtualPath(getStringInitParameter(extCtx, INIT_PARAM_RESOURCE_VIRTUAL_PATH,
+                    INIT_PARAM_RESOURCE_VIRTUAL_PATH_DEFAULT));
+
+            myfacesConfig.setCheckExtensionsFilter(getBooleanInitParameter(extCtx, INIT_CHECK_EXTENSIONS_FILTER,
+                    INIT_CHECK_EXTENSIONS_FILTER_DEFAULT));
+            
+            if(RI_IMPL_AVAILABLE)
+            {
+                if(log.isLoggable(Level.INFO))
+                {
+                    log.info("Starting up Tomahawk on the RI-JSF-Implementation.");
+                }
+            }
+
+            if(MYFACES_IMPL_AVAILABLE)
+            {
+                if(log.isLoggable(Level.INFO))
+                {
+                    log.info("Starting up Tomahawk on the MyFaces-JSF-Implementation");
+                }
+            }
+        }
+        else
+        {
+            if (log.isLoggable(Level.INFO))
+            {
+                log.info("Tomahawk jar not available. Autoscrolling, DetectJavascript, AddResourceClass and CheckExtensionsFilter are disabled now.");
+            }
+        }
+
+        if(RI_IMPL_AVAILABLE && MYFACES_IMPL_AVAILABLE)
+        {
+            log.severe("Both MyFaces and the RI are on your classpath. Please make sure to use only one of the two JSF-implementations.");
+        }
+        return myfacesConfig;
+    }
+
+    private static boolean getBooleanInitParameter(ExternalContext externalContext,
+                                                   String paramName,
+                                                   boolean defaultValue)
+    {
+        String strValue = externalContext.getInitParameter(paramName);
+        if (strValue == null)
+        {
+            if (log.isLoggable(Level.INFO)) log.info("No context init parameter '" + paramName + "' found, using default value " + defaultValue);
+            return defaultValue;
+        }
+        else if (strValue.equalsIgnoreCase("true") || strValue.equalsIgnoreCase("on") || strValue.equalsIgnoreCase("yes"))
+        {
+            return true;
+        }
+        else if (strValue.equalsIgnoreCase("false") || strValue.equalsIgnoreCase("off") || strValue.equalsIgnoreCase("no"))
+        {
+            return false;
+        }
+        else
+        {
+            if (log.isLoggable(Level.WARNING)) log.warning("Wrong context init parameter '" + paramName + "' (='" + strValue + "'), using default value " + defaultValue);
+            return defaultValue;
+        }
+    }
+
+    private static String getStringInitParameter(ExternalContext externalContext,
+                                                 String paramName,
+                                                 String defaultValue)
+    {
+        String strValue = externalContext.getInitParameter(paramName);
+        if (strValue == null)
+        {
+            if (log.isLoggable(Level.INFO)) log.info("No context init parameter '" + paramName + "' found, using default value " + defaultValue); //defaultValue==null should not be a problem here
+            return defaultValue;
+        }
+        
+        return strValue;
+    }
+
+    private static long getLongInitParameter(ExternalContext externalContext,
+                                                  String paramName,
+                                                  long defaultValue) {
+       String strValue = externalContext.getInitParameter(paramName);
+       if (strValue == null)
+       {
+           if (log.isLoggable(Level.INFO)) log.info("No context init parameter '" +paramName +"' found, using default value " +defaultValue);
+           return defaultValue;
+       }
+       else
+       {
+           try {
+               return Long.parseLong(strValue);
+           } catch (NumberFormatException e) {
+               if (log.isLoggable(Level.WARNING)) log.warning("Wrong context init parameter '" + paramName + "' (='" + strValue + "'), using default value " + defaultValue);
+           }
+           return defaultValue;
+       }
+    }
+        
+     private void setResourceVirtualPath( String resourceVirtualPath )
+     {
+         this._resourceVirtualPath = resourceVirtualPath;
+    }
+
+     public String getResourceVirtualPath()
+     {
+         return this._resourceVirtualPath;
+     }
+
+    public boolean isPrettyHtml()
+    {
+        return _prettyHtml;
+    }
+
+    private void setPrettyHtml(boolean prettyHtml)
+    {
+        _prettyHtml = prettyHtml;
+    }
+
+    public boolean isDetectJavascript()
+    {
+        return _detectJavascript;
+    }
+
+    private void setDetectJavascript(boolean detectJavascript)
+    {
+        _detectJavascript = detectJavascript;
+    }
+
+    private void setReadonlyAsDisabledForSelect(boolean readonlyAsDisabledForSelect)
+    {
+        _readonlyAsDisabledForSelect = readonlyAsDisabledForSelect;
+    }
+
+    public boolean isReadonlyAsDisabledForSelect()
+    {
+        return _readonlyAsDisabledForSelect;
+    }
+
+
+   public long getConfigRefreshPeriod()
+   {
+       return _configRefreshPeriod;
+   }
+
+   public void setConfigRefreshPeriod(long configRefreshPeriod)
+   {
+       _configRefreshPeriod = configRefreshPeriod;
+   }
+
+    /**
+     * JSF API 1.2 defines a "javax.faces.ViewState" client parameter, that must be rendered as both the "name"
+     * and the "id" attribute of the hidden input that is rendered for the purpose of state saving
+     * (see <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/javax/faces/render/ResponseStateManager.html#VIEW_STATE_PARAM">API</a>).
+     * Actually this causes duplicate id attributes and thus invalid XHTML pages when multiple forms are rendered on
+     * one page. With the {@link #INIT_PARAM_RENDER_VIEWSTATE_ID} context parameter you can tune this behaviour.
+     * <br/>Set it to
+     * <ul><li>true - to render JSF 1.2 compliant id attributes (that might cause invalid XHTML), or</li>
+     * <li>false - to omit rendering of the id attribute (which is only needed for very special AJAX/Javascript components)</li></ul>
+     * Default value is: true (for backwards compatibility and JSF 1.2 compliancy) 
+     * @return true, if the client state hidden input "javax.faces.ViewState" id attribute should be rendered
+     */
+    public boolean isRenderViewStateId() {
+        return _renderViewStateId;
+    }
+
+    public void setRenderViewStateId(boolean renderViewStateId) {
+        _renderViewStateId = renderViewStateId;
+    }
+
+    /**
+     * <p>W3C recommends to use the "&amp;amp;" entity instead of a plain "&amp;" character within HTML.
+     * This also applies to attribute values and thus to the "href" attribute of &lt;a&gt; elements as well.
+     * Even more, when XHTML is used as output the usage of plain "&amp;" characters is forbidden and would lead to
+     * invalid XML code.
+     * Therefore, since version 1.1.6 MyFaces renders the correct "&amp;amp;" entity for links.</p>
+     * <p>The init parameter
+     * {@link #INIT_PARAM_STRICT_XHTML_LINKS} makes it possible to restore the old behaviour and to make MyFaces
+     * "bug compatible" to the Sun RI which renders plain "&amp;" chars in links as well.</p>
+     * @see <a href="http://www.w3.org/TR/html401/charset.html#h-5.3.2">HTML 4.01 Specification</a>
+     * @see <a href="http://issues.apache.org/jira/browse/MYFACES-1774">Jira: MYFACES-1774</a>
+     * @return true if ampersand characters ("&amp;") should be correctly rendered as "&amp;amp;" entities within link urls (=default),
+     *         false for old (XHTML incompatible) behaviour
+     */
+    public boolean isStrictXhtmlLinks() {
+        return _strictXhtmlLinks;
+    }
+
+    public void setStrictXhtmlLinks(boolean strictXhtmlLinks) {
+        _strictXhtmlLinks = strictXhtmlLinks;
+    }
+
+    public boolean isTomahawkAvailable()
+    {
+        return TOMAHAWK_AVAILABLE;
+    }
+
+    public boolean isMyfacesImplAvailable()
+    {
+        return MYFACES_IMPL_AVAILABLE;
+    }
+
+    public boolean isRiImplAvailable()
+    {
+        return RI_IMPL_AVAILABLE;
+    }
+
+    /**
+     * Do not use this in renderers directly!
+     * You should use {@link org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils#isJavascriptAllowed}
+     * to determine if javascript is allowed or not.
+     */
+    public boolean isAllowJavascript()
+    {
+        return _allowJavascript;
+    }
+
+    private void setAllowJavascript(boolean allowJavascript)
+    {
+        _allowJavascript = allowJavascript;
+    }
+
+    public boolean isAutoScroll()
+    {
+        return _autoScroll;
+    }
+
+    private void setAutoScroll(boolean autoScroll)
+    {
+        _autoScroll = autoScroll;
+    }
+
+    private void setAddResourceClass(String addResourceClass)
+    {
+        _addResourceClass = addResourceClass;
+    }
+
+    public String getAddResourceClass()
+    {
+        return _addResourceClass;
+    }
+
+    /**
+     * ExtensionFilter needs access to AddResourceClass init param without having
+     * an ExternalContext at hand.
+     */
+    public static String getAddResourceClassFromServletContext(ServletContext servletContext)
+    {
+        String addResourceClass = servletContext.getInitParameter(INIT_PARAM_ADD_RESOURCE_CLASS);
+
+        return addResourceClass == null ? INIT_PARAM_ADD_RESOURCE_CLASS_DEFAULT : addResourceClass;
+    }
+
+    /**
+     * Should the environment be checked so that the ExtensionsFilter will work properly. 
+     */
+    public boolean isCheckExtensionsFilter()
+    {
+        return _checkExtensionsFilter;
+    }
+
+    public void setCheckExtensionsFilter(boolean extensionsFilter)
+    {
+        _checkExtensionsFilter = extensionsFilter;
+    }
+
+    /**
+     * 
+     */
+    public boolean isViewStateJavascript()
+    {
+        return _viewStateJavascript;
+    }
+
+    private void setViewStateJavascript(boolean viewStateJavascript)
+    {
+        _viewStateJavascript = viewStateJavascript;
+    }
+
+    public void setRenderClearJavascriptOnButton(
+            boolean renderClearJavascriptOnButton)
+    {
+        _renderClearJavascriptOnButton = renderClearJavascriptOnButton;
+    }
+
+    /**
+     * 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.
+     * 
+     * @return
+     */
+    public boolean isRenderClearJavascriptOnButton()
+    {
+        return _renderClearJavascriptOnButton;
+    }
+
+    public boolean isRenderHiddenFieldsForLinkParams()
+    {
+        return renderHiddenFieldsForLinkParams;
+    }
+
+    public void setRenderHiddenFieldsForLinkParams(
+            boolean renderHiddenFieldsForLinkParams)
+    {
+        this.renderHiddenFieldsForLinkParams = renderHiddenFieldsForLinkParams;
+    }
+
+    public void setSaveFormSubmitLinkIE(boolean saveFormSubmitLinkIE)
+    {
+        _saveFormSubmitLinkIE = saveFormSubmitLinkIE;
+    }
+
+    /**
+     * Add a code that save the form when submit a form using a
+     * link. It's a bug on IE.
+     * 
+     * @return
+     */
+    public boolean isSaveFormSubmitLinkIE()
+    {
+        return _saveFormSubmitLinkIE;
+    }
+    
+    public String getDelegateFacesServlet()
+    {
+        return _delegateFacesServlet;
+    }
+    
+    public void setDelegateFacesServlet(String delegateFacesServlet)
+    {
+        _delegateFacesServlet = delegateFacesServlet;
+    }
+
+    public boolean isRefreshTransientBuildOnPSS()
+    {
+        return _refreshTransientBuildOnPSS;
+    }
+
+    public void setRefreshTransientBuildOnPSS(boolean refreshTransientBuildOnPSS)
+    {
+        this._refreshTransientBuildOnPSS = refreshTransientBuildOnPSS;
+    }
+
+    public boolean isRefreshTransientBuildOnPSSAuto()
+    {
+        return _refreshTransientBuildOnPSSAuto;
+    }
+
+    public void setRefreshTransientBuildOnPSSAuto(
+            boolean refreshTransientBuildOnPSSAuto)
+    {
+        this._refreshTransientBuildOnPSSAuto = refreshTransientBuildOnPSSAuto;
+    }
+
+    public boolean isRefreshTransientBuildOnPSSPreserveState()
+    {
+        return refreshTransientBuildOnPSSPreserveState;
+    }
+
+    public void setRefreshTransientBuildOnPSSPreserveState(
+            boolean refreshTransientBuildOnPSSPreserveState)
+    {
+        this.refreshTransientBuildOnPSSPreserveState = refreshTransientBuildOnPSSPreserveState;
+    }
+    
+    public boolean isValidateXML()
+    {
+        return _validateXML;
+    }
+
+    public void setValidateXML(boolean validateXML)
+    {
+        _validateXML = validateXML;
+    }
+
+    public boolean isWrapScriptContentWithXmlCommentTag()
+    {
+        return _wrapScriptContentWithXmlCommentTag;
+    }
+
+    public void setWrapScriptContentWithXmlCommentTag(
+            boolean wrapScriptContentWithXmlCommentTag)
+    {
+        this._wrapScriptContentWithXmlCommentTag = wrapScriptContentWithXmlCommentTag;
+    }
+
+    public boolean isRenderFormSubmitScriptInline()
+    {
+        return _renderFormSubmitScriptInline;
+    }
+
+    public void setRenderFormSubmitScriptInline(
+            boolean renderFormSubmitScriptInline)
+    {
+        _renderFormSubmitScriptInline = renderFormSubmitScriptInline;
+    }
+
+    public boolean isDebugPhaseListenerEnabled()
+    {
+        return _debugPhaseListenerEnabled;
+    }
+
+    public void setDebugPhaseListenerEnabled(boolean debugPhaseListener)
+    {
+        this._debugPhaseListenerEnabled = debugPhaseListener;
+    }
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/AjaxExceptionHandlerImpl.java b/shared/src/main/java/org/apache/myfaces/shared/context/AjaxExceptionHandlerImpl.java
new file mode 100644
index 0000000..4c912ad
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/AjaxExceptionHandlerImpl.java
@@ -0,0 +1,339 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.context;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.el.ELException;
+import javax.faces.FacesException;
+import javax.faces.context.ExceptionHandler;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.PartialResponseWriter;
+import javax.faces.context.PartialViewContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ExceptionQueuedEvent;
+import javax.faces.event.ExceptionQueuedEventContext;
+import javax.faces.event.SystemEvent;
+
+/**
+ * 
+ * Specialized Ajax Handler, according to JSF 2.0 rev A section 13.3.7.
+ * 
+ * @author Leonardo Uribe
+ *
+ */
+public class AjaxExceptionHandlerImpl extends ExceptionHandler
+{
+    //The spec says this related to exception handling in ajax requests:
+    //
+    //"... JavaServer Faces Ajax frameworks must ensure exception information 
+    // is written to the response in the format: 
+    //
+    //<partial-response>
+    //  <error>
+    //    <error-name>...</error-name>
+    //    <error-message>...</error-message>
+    //  </error>
+    //</partial-response>
+    //
+    //Implementations must ensure that an ExceptionHandler suitable for writing 
+    //exceptions to the partial response is installed if the current request 
+    //required an Ajax response (PartialViewContext.isAjaxRequest() returns true)
+    //
+    //Implementations may choose to include a specialized ExceptionHandler for 
+    //Ajax that extends from javax.faces.context.ExceptionHandlerWrapper, and 
+    //have the javax.faces.context.ExceptionHandlerFactory implementation 
+    //install it if the environment requires it. ..."
+    
+    private static final Logger log = Logger.getLogger(AjaxExceptionHandlerImpl.class.getName());
+    
+    private Queue<ExceptionQueuedEvent> handled;
+    private Queue<ExceptionQueuedEvent> unhandled;
+    private ExceptionQueuedEvent handledAndThrown;
+    
+    public AjaxExceptionHandlerImpl()
+    {
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ExceptionQueuedEvent getHandledExceptionQueuedEvent()
+    {
+        return handledAndThrown;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Iterable<ExceptionQueuedEvent> getHandledExceptionQueuedEvents()
+    {
+        return handled == null ? Collections.<ExceptionQueuedEvent>emptyList() : handled;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Throwable getRootCause(Throwable t)
+    {
+        if (t == null)
+        {
+            throw new NullPointerException("t");
+        }
+        
+        while (t != null)
+        {
+            Class<?> clazz = t.getClass();
+            if (!clazz.equals(FacesException.class) && !clazz.equals(ELException.class))
+            {
+                return t;
+            }
+            
+            t = t.getCause();
+        }
+        
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Iterable<ExceptionQueuedEvent> getUnhandledExceptionQueuedEvents()
+    {
+        return unhandled == null ? Collections.<ExceptionQueuedEvent>emptyList() : unhandled;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void handle() throws FacesException
+    {
+        if (unhandled != null && !unhandled.isEmpty())
+        {
+            if (handled == null)
+            {
+                handled = new LinkedList<ExceptionQueuedEvent>();
+            }
+            
+            List<Throwable> throwableList = new ArrayList<Throwable>();
+            FacesContext facesContext = null;
+            
+            do
+            {
+                // For each ExceptionEvent in the list
+                
+                // get the event to handle
+                ExceptionQueuedEvent event = unhandled.peek();
+                try
+                {
+                    // call its getContext() method
+                    ExceptionQueuedEventContext context = event.getContext();
+
+                    if (facesContext == null)
+                    {
+                        facesContext = event.getContext().getContext();
+                    }
+                    
+                    // and call getException() on the returned result
+                    Throwable exception = context.getException();
+                    
+                    // Upon encountering the first such Exception that is not an instance of
+                    // javax.faces.event.AbortProcessingException
+                    if (!shouldSkip(exception))
+                    {
+                        // set handledAndThrown so that getHandledExceptionQueuedEvent() returns this event
+                        handledAndThrown = event;
+                        
+                        Throwable rootCause = getRootCause(exception);
+                        
+                        throwableList.add(rootCause == null ? exception : rootCause);
+                        
+                        //break;
+                    }
+                    else
+                    {
+                        // Testing mojarra it logs a message and the exception
+                        // however, this behaviour is not mentioned in the spec
+                        log.log(Level.SEVERE, exception.getClass().getName() + " occured while processing " +
+                                (context.inBeforePhase() ? "beforePhase() of " : 
+                                        (context.inAfterPhase() ? "afterPhase() of " : "")) + 
+                                "phase " + context.getPhaseId() + ": " +
+                                "UIComponent-ClientId=" + 
+                                (context.getComponent() != null ? 
+                                        context.getComponent().getClientId(context.getContext()) : "") + ", " +
+                                "Message=" + exception.getMessage());
+                        
+                        log.log(Level.SEVERE, exception.getMessage(), exception);
+                    }
+                }
+                finally
+                {
+                    // if we will throw the Exception or if we just logged it,
+                    // we handled it in either way --> add to handled
+                    handled.add(event);
+                    unhandled.remove(event);
+                }
+            } while (!unhandled.isEmpty());
+
+            if (!throwableList.isEmpty())
+            {
+                PartialResponseWriter partialWriter = null;
+                boolean responseComplete = false;
+
+                //Retrieve the partial writer used to render the exception
+                if (facesContext == null)
+                {
+                    facesContext = FacesContext.getCurrentInstance();
+                }
+                
+                facesContext = (facesContext == null) ? FacesContext.getCurrentInstance() : facesContext;
+                ExternalContext externalContext = facesContext.getExternalContext();
+                
+                //Clean up the response if by some reason something has been written before.
+                if (!facesContext.getExternalContext().isResponseCommitted())
+                {
+                    facesContext.getExternalContext().responseReset();
+                }
+                
+                PartialViewContext partialViewContext = facesContext.getPartialViewContext();
+                partialWriter = partialViewContext.getPartialResponseWriter();
+
+                // ajax request --> xml error page 
+                externalContext.setResponseContentType("text/xml");
+                externalContext.setResponseCharacterEncoding("UTF-8");
+                externalContext.addResponseHeader("Cache-control", "no-cache");
+                
+                try
+                {
+                    partialWriter.startDocument();
+    
+                    for (Throwable t : throwableList)
+                    {
+                        renderAjaxError(partialWriter, t);
+                    }
+                    
+                    responseComplete = true;
+                }
+                catch (IOException e)
+                {
+                    if (log.isLoggable(Level.SEVERE))
+                    {
+                        log.log(Level.SEVERE, "Cannot render exception on ajax request", e);
+                    }
+                }
+                finally
+                {
+                    if (responseComplete)
+                    {
+                        try
+                        {
+                            partialWriter.endDocument();
+                            facesContext.responseComplete();
+                        }
+                        catch (IOException e1)
+                        {
+                            if (log.isLoggable(Level.SEVERE))
+                            {
+                                log.log(Level.SEVERE, "Cannot render exception on ajax request", e1);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+    
+    private void renderAjaxError(PartialResponseWriter partialWriter, Throwable ex) throws IOException
+    {
+        partialWriter.startError(ex.getClass().getName());
+        if (ex.getCause() != null)
+        {
+            partialWriter.write(ex.getCause().toString());
+        }
+        else if (ex.getMessage() != null)
+        {
+            partialWriter.write(ex.getMessage());
+        }
+        partialWriter.endError();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isListenerForSource(Object source)
+    {
+        return source instanceof ExceptionQueuedEventContext;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void processEvent(SystemEvent exceptionQueuedEvent) throws AbortProcessingException
+    {
+        if (unhandled == null)
+        {
+            unhandled = new LinkedList<ExceptionQueuedEvent>();
+        }
+        
+        unhandled.add((ExceptionQueuedEvent)exceptionQueuedEvent);
+    }
+    
+    protected Throwable getRethrownException(Throwable exception)
+    {
+        // Let toRethrow be either the result of calling getRootCause() on the Exception, 
+        // or the Exception itself, whichever is non-null
+        Throwable toRethrow = getRootCause(exception);
+        if (toRethrow == null)
+        {
+            toRethrow = exception;
+        }
+        
+        return toRethrow;
+    }
+    
+    protected FacesException wrap(Throwable exception)
+    {
+        if (exception instanceof FacesException)
+        {
+            return (FacesException) exception;
+        }
+        return new FacesException(exception);
+    }
+    
+    protected boolean shouldSkip(Throwable exception)
+    {
+        return exception instanceof AbortProcessingException;
+    }
+
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/ExceptionHandlerImpl.java b/shared/src/main/java/org/apache/myfaces/shared/context/ExceptionHandlerImpl.java
new file mode 100644
index 0000000..0835962
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/ExceptionHandlerImpl.java
@@ -0,0 +1,248 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.context;
+
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.el.ELException;
+import javax.faces.FacesException;
+import javax.faces.context.ExceptionHandler;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ExceptionQueuedEvent;
+import javax.faces.event.ExceptionQueuedEventContext;
+import javax.faces.event.SystemEvent;
+
+/**
+ * DOCUMENT ME!
+ * 
+ * @author (latest modification by $Author: slessard $)
+ * @version $Revision: 696523 $ $Date: 2008-09-24 18:31:37 -0400 (mer., 17 sept. 2008) $
+ * 
+ * @since 2.0
+ */
+public class ExceptionHandlerImpl extends ExceptionHandler
+{
+    /*
+     * PLEASE NOTE!!!
+     * javax.faces.webapp.PreJsf2ExceptionHandlerFactory uses most parts of this implementation
+     * for its private static inner class, only the handle method differs a bit.
+     * Thus, any changes made here should also be applied to PreJsf2ExceptionHandlerFactory
+     * in the right way (you can copy everything except handle(), this method needs special treatment).
+     */
+    
+    private static final Logger log = Logger.getLogger(ExceptionHandlerImpl.class.getName());
+    
+    private Queue<ExceptionQueuedEvent> handled;
+    private Queue<ExceptionQueuedEvent> unhandled;
+    private ExceptionQueuedEvent handledAndThrown;
+
+    public ExceptionHandlerImpl()
+    {
+        
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ExceptionQueuedEvent getHandledExceptionQueuedEvent()
+    {
+        return handledAndThrown;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Iterable<ExceptionQueuedEvent> getHandledExceptionQueuedEvents()
+    {
+        return handled == null ? Collections.<ExceptionQueuedEvent>emptyList() : handled;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Throwable getRootCause(Throwable t)
+    {
+        if (t == null)
+        {
+            throw new NullPointerException("t");
+        }
+        
+        while (t != null)
+        {
+            Class<?> clazz = t.getClass();
+            if (!clazz.equals(FacesException.class) && !clazz.equals(ELException.class))
+            {
+                return t;
+            }
+            
+            t = t.getCause();
+        }
+        
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public Iterable<ExceptionQueuedEvent> getUnhandledExceptionQueuedEvents()
+    {
+        return unhandled == null ? Collections.<ExceptionQueuedEvent>emptyList() : unhandled;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void handle() throws FacesException
+    {
+        if (unhandled != null && !unhandled.isEmpty())
+        {
+            if (handled == null)
+            {
+                handled = new LinkedList<ExceptionQueuedEvent>();
+            }
+            
+            FacesException toThrow = null;
+            
+            do
+            {
+                // For each ExceptionEvent in the list
+                
+                // get the event to handle
+                ExceptionQueuedEvent event = unhandled.peek();
+                try
+                {
+                    // call its getContext() method
+                    ExceptionQueuedEventContext context = event.getContext();
+                    
+                    // and call getException() on the returned result
+                    Throwable exception = context.getException();
+                    
+                    // Upon encountering the first such Exception that is not an instance of
+                    // javax.faces.event.AbortProcessingException
+                    if (!shouldSkip(exception))
+                    {
+                        // set handledAndThrown so that getHandledExceptionQueuedEvent() returns this event
+                        handledAndThrown = event;
+                        
+                        // Re-wrap toThrow in a ServletException or (PortletException, if in a portlet environment) 
+                        // and throw it
+                        // FIXME: The spec says to NOT use a FacesException to propagate the exception, but I see
+                        //        no other way as ServletException is not a RuntimeException
+                        toThrow = wrap(getRethrownException(exception));
+                        break;
+                    }
+                    else
+                    {
+                        // Testing mojarra it logs a message and the exception
+                        // however, this behaviour is not mentioned in the spec
+                        log.log(Level.SEVERE, exception.getClass().getName() + " occured while processing " +
+                                (context.inBeforePhase() ? "beforePhase() of " : 
+                                        (context.inAfterPhase() ? "afterPhase() of " : "")) + 
+                                "phase " + context.getPhaseId() + ": " +
+                                "UIComponent-ClientId=" + 
+                                (context.getComponent() != null ? 
+                                        context.getComponent().getClientId(context.getContext()) : "") + ", " +
+                                "Message=" + exception.getMessage());
+                        
+                        log.log(Level.SEVERE, exception.getMessage(), exception);
+                        
+                    }
+                }
+                catch (Throwable t)
+                {
+                    // A FacesException must be thrown if a problem occurs while performing
+                    // the algorithm to handle the exception
+                    throw new FacesException("Could not perform the algorithm to handle the Exception", t);
+                }
+                finally
+                {
+                    // if we will throw the Exception or if we just logged it,
+                    // we handled it in either way --> add to handled
+                    handled.add(event);
+                    unhandled.remove(event);
+                }
+            } while (!unhandled.isEmpty());
+            
+            // do we have to throw an Exception?
+            if (toThrow != null)
+            {
+                throw toThrow;
+            }
+        }
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public boolean isListenerForSource(Object source)
+    {
+        return source instanceof ExceptionQueuedEventContext;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void processEvent(SystemEvent exceptionQueuedEvent) throws AbortProcessingException
+    {
+        if (unhandled == null)
+        {
+            unhandled = new LinkedList<ExceptionQueuedEvent>();
+        }
+        
+        unhandled.add((ExceptionQueuedEvent)exceptionQueuedEvent);
+    }
+    
+    protected Throwable getRethrownException(Throwable exception)
+    {
+        // Let toRethrow be either the result of calling getRootCause() on the Exception, 
+        // or the Exception itself, whichever is non-null
+        Throwable toRethrow = getRootCause(exception);
+        if (toRethrow == null)
+        {
+            toRethrow = exception;
+        }
+        
+        return toRethrow;
+    }
+    
+    protected FacesException wrap(Throwable exception)
+    {
+        if (exception instanceof FacesException)
+        {
+            return (FacesException) exception;
+        }
+        return new FacesException(exception);
+    }
+    
+    protected boolean shouldSkip(Throwable exception)
+    {
+        return exception instanceof AbortProcessingException;
+    }
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/ResponseWriterWrapper.java b/shared/src/main/java/org/apache/myfaces/shared/context/ResponseWriterWrapper.java
new file mode 100755
index 0000000..2826881
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/ResponseWriterWrapper.java
@@ -0,0 +1,132 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.context;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.ResponseWriter;
+import java.io.IOException;
+import java.io.Writer;
+
+/**
+ * Convenient base class for writing a ResponseWriter wrapper class.
+ *
+ * @author Manfred Geiler
+ */
+public abstract class ResponseWriterWrapper
+        extends ResponseWriter
+{
+    protected ResponseWriter _responseWriter;
+
+    public ResponseWriterWrapper(ResponseWriter responseWriter)
+    {
+        _responseWriter = responseWriter;
+    }
+
+    public String getContentType()
+    {
+        return _responseWriter.getContentType();
+    }
+
+    public String getCharacterEncoding()
+    {
+        return _responseWriter.getCharacterEncoding();
+    }
+
+    public void flush() throws IOException
+    {
+        _responseWriter.flush();
+    }
+
+    public void startDocument() throws IOException
+    {
+        _responseWriter.startDocument();
+    }
+
+    public void endDocument() throws IOException
+    {
+        _responseWriter.endDocument();
+    }
+
+    public void startElement(String s, UIComponent uicomponent) throws IOException
+    {
+        _responseWriter.startElement(s, uicomponent);
+    }
+
+    public void endElement(String s) throws IOException
+    {
+        _responseWriter.endElement(s);
+    }
+
+    public void writeAttribute(String s, Object obj, String s1) throws IOException
+    {
+        _responseWriter.writeAttribute(s, obj, s1);
+    }
+
+    public void writeURIAttribute(String s, Object obj, String s1) throws IOException
+    {
+        _responseWriter.writeURIAttribute(s, obj, s1);
+    }
+
+    public void writeComment(Object obj) throws IOException
+    {
+        _responseWriter.writeComment(obj);
+    }
+
+    public void writeText(Object obj, String s) throws IOException
+    {
+        _responseWriter.writeText(obj, s);
+    }
+
+    public void writeText(char ac[], int i, int j) throws IOException
+    {
+        _responseWriter.writeText(ac, i, j);
+    }
+
+    public abstract ResponseWriter cloneWithWriter(Writer writer);
+
+    public void close() throws IOException
+    {
+        _responseWriter.close();
+    }
+
+    public void write(char cbuf[], int off, int len) throws IOException
+    {
+        _responseWriter.write(cbuf, off, len);
+    }
+
+    public void write(int c) throws IOException
+    {
+        _responseWriter.write(c);
+    }
+
+    public void write(char cbuf[]) throws IOException
+    {
+        _responseWriter.write(cbuf);
+    }
+
+    public void write(String str) throws IOException
+    {
+        _responseWriter.write(str);
+    }
+
+    public void write(String str, int off, int len) throws IOException
+    {
+        _responseWriter.write(str, off, len);
+    }
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/SwitchAjaxExceptionHandlerWrapperImpl.java b/shared/src/main/java/org/apache/myfaces/shared/context/SwitchAjaxExceptionHandlerWrapperImpl.java
new file mode 100644
index 0000000..306c257
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/SwitchAjaxExceptionHandlerWrapperImpl.java
@@ -0,0 +1,115 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.context;
+
+import javax.faces.context.ExceptionHandler;
+import javax.faces.context.ExceptionHandlerWrapper;
+import javax.faces.context.FacesContext;
+import javax.faces.event.AbortProcessingException;
+import javax.faces.event.ExceptionQueuedEvent;
+import javax.faces.event.ExceptionQueuedEventContext;
+import javax.faces.event.SystemEvent;
+
+/**
+ * This wrapper is a switch to choose in a lazy way between ajax and
+ * normal exceptionHandler wrapping, because FacesContext is initialized after
+ * ExceptionHandler, so it is not safe to get it when
+ * ExceptionHandlerFactory.getExceptionHandler() is called.
+ * 
+ * @author Leonardo Uribe
+ *
+ */
+public class SwitchAjaxExceptionHandlerWrapperImpl extends ExceptionHandlerWrapper
+{
+    private ExceptionHandler _requestExceptionHandler;
+    private ExceptionHandler _ajaxExceptionHandler;
+    private Boolean _isAjaxRequest;
+    
+    public SwitchAjaxExceptionHandlerWrapperImpl(
+            ExceptionHandler requestExceptionHandler,
+            ExceptionHandler ajaxExceptionHandler)
+    {
+        _requestExceptionHandler = requestExceptionHandler;
+        _ajaxExceptionHandler = ajaxExceptionHandler;
+    }
+    
+    @Override
+    public void processEvent(SystemEvent exceptionQueuedEvent)
+            throws AbortProcessingException
+    {
+        //Check if this is an ajax request, but take advantage of exceptionQueuedEvent facesContext
+        isAjaxRequest(exceptionQueuedEvent);
+        super.processEvent(exceptionQueuedEvent);
+    }
+
+    protected boolean isAjaxRequest(SystemEvent exceptionQueuedEvent)
+    {
+        if (_isAjaxRequest == null)
+        {
+            if (exceptionQueuedEvent instanceof ExceptionQueuedEvent)
+            {
+                ExceptionQueuedEvent eqe = (ExceptionQueuedEvent)exceptionQueuedEvent;
+                ExceptionQueuedEventContext eqec = eqe.getContext();
+                if (eqec != null)
+                {
+                    FacesContext facesContext = eqec.getContext();
+                    if (facesContext != null)
+                    {
+                        return isAjaxRequest(facesContext);
+                    }
+                }
+            }
+            return isAjaxRequest();
+        }
+        return _isAjaxRequest;
+    }
+    
+    protected boolean isAjaxRequest(FacesContext facesContext)
+    {
+        if (_isAjaxRequest == null)
+        {
+            facesContext = (facesContext == null) ? FacesContext.getCurrentInstance() : facesContext;
+            _isAjaxRequest = facesContext.getPartialViewContext().isAjaxRequest();
+        }
+        return _isAjaxRequest;
+    }
+    
+    protected boolean isAjaxRequest()
+    {
+        if (_isAjaxRequest == null)
+        {
+            FacesContext facesContext = FacesContext.getCurrentInstance();
+            _isAjaxRequest = facesContext.getPartialViewContext().isAjaxRequest();
+        }
+        return _isAjaxRequest;
+    }
+    
+    @Override
+    public ExceptionHandler getWrapped()
+    {
+        if (isAjaxRequest())
+        {
+            return _ajaxExceptionHandler;
+        }
+        else
+        {
+            return _requestExceptionHandler;
+        }
+    }
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashImpl.java b/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashImpl.java
new file mode 100644
index 0000000..d47ee1e
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashImpl.java
@@ -0,0 +1,1087 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.context.flash;
+
+import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
+import org.apache.myfaces.shared.util.ExternalContextUtils;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.Flash;
+import javax.faces.event.PhaseId;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletResponse;
+import java.io.Serializable;
+import java.math.BigInteger;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.logging.Logger;
+
+/**
+ * Implementation of Flash object
+ * 
+ * @author Leonardo Uribe (latest modification by $Author: lu4242 $)
+ * @author Jakob Korherr
+ * @version $Revision: 904316 $ $Date: 2010-01-28 17:14:41 -0700 (Thu, 28 Jan 2010) $
+ */
+public class FlashImpl extends Flash
+{
+    
+    // ~ static fields --------------------------------------------------------
+    
+    private static final Logger logger = Logger.getLogger(FlashImpl.class.getName());
+    
+    /**
+     * Defines whether flash scope is disabled.
+     */
+    @JSFWebConfigParam(defaultValue="false",since="2.0.5")
+    private static final String FLASH_SCOPE_DISABLED_PARAM = "org.apache.myfaces.FLASH_SCOPE_DISABLED";
+
+    /**
+     * Use this prefix instead of the whole class name, because
+     * this makes the Cookies and the SubKeyMap operations (actually
+     * every String based operation where this is used as a key) faster.
+     */
+    private static final String FLASH_PREFIX = "oam.Flash";
+    
+    /**
+     * Key on application map to keep current instance
+     */
+    static final String FLASH_INSTANCE = FLASH_PREFIX + ".INSTANCE";
+
+    /**
+     * Key to store if this setRedirect(true) was called on this request,
+     * and to store the redirect Cookie.
+     */
+    static final String FLASH_REDIRECT = FLASH_PREFIX + ".REDIRECT";
+    
+    /**
+     * Key to store the value of the redirect cookie
+     */
+    static final String FLASH_PREVIOUS_REQUEST_REDIRECT 
+            = FLASH_PREFIX + ".REDIRECT.PREVIOUSREQUEST";
+    
+    /**
+     * Key used to check if this request should keep messages
+     */
+    static final String FLASH_KEEP_MESSAGES = FLASH_PREFIX + ".KEEP_MESSAGES";
+
+    /**
+     * Key used to store the messages list in the render FlashMap.
+     */
+    static final String FLASH_KEEP_MESSAGES_LIST = "KEEPMESSAGESLIST";
+
+    /**
+     * Session map prefix to flash maps
+     */
+    static final String FLASH_SESSION_MAP_SUBKEY_PREFIX = FLASH_PREFIX + ".SCOPE";
+    
+    /**
+     * Key for the cached render FlashMap instance on the request map.
+     */
+    static final String FLASH_RENDER_MAP = FLASH_PREFIX + ".RENDERMAP";
+    
+    /**
+     * Key for the current render FlashMap token.
+     */
+    static final String FLASH_RENDER_MAP_TOKEN = FLASH_PREFIX + ".RENDERMAP.TOKEN";
+    
+    /**
+     * Key for the cached execute FlashMap instance on the request map.
+     */
+    static final String FLASH_EXECUTE_MAP = FLASH_PREFIX + ".EXECUTEMAP";
+
+    /**
+     * Key for the current execute FlashMap token.
+     */
+    static final String FLASH_EXECUTE_MAP_TOKEN = FLASH_PREFIX + ".EXECUTEMAP.TOKEN";
+    
+    /**
+     * Token separator.
+     */
+    static final char SEPARATOR_CHAR = '.';
+    
+     // ~ static methods  -----------------------------------------------------
+    
+    /**
+     * Return a Flash instance from the application map
+     * 
+     * @param context
+     * @return
+     */
+    public static Flash getCurrentInstance(ExternalContext context)
+    {
+        Map<String, Object> applicationMap = context.getApplicationMap();
+        
+        Flash flash = (Flash) applicationMap.get(FLASH_INSTANCE);
+        if (flash == null)
+        {
+            // synchronize the ApplicationMap to ensure that only
+            // once instance of FlashImpl is created and stored in it.
+            synchronized (applicationMap)
+            {
+                // check again, because first try was un-synchronized
+                flash = (Flash) applicationMap.get(FLASH_INSTANCE);
+                if (flash == null)
+                {
+                    flash = new FlashImpl(context);
+                    applicationMap.put(FLASH_INSTANCE, flash);
+                }
+            }
+        }
+
+        return flash;
+    }
+
+    /**
+     * Returns a cryptographically secure random number to use as the _count seed
+     */
+    private static long _getSeed()
+    {
+        SecureRandom rng;
+        try
+        {
+            // try SHA1 first
+            rng = SecureRandom.getInstance("SHA1PRNG");
+        }
+        catch (NoSuchAlgorithmException e)
+        {
+            // SHA1 not present, so try the default (which could potentially not be
+            // cryptographically secure)
+            rng = new SecureRandom();
+        }
+
+        // use 48 bits for strength and fill them in
+        byte[] randomBytes = new byte[6];
+        rng.nextBytes(randomBytes);
+
+        // convert to a long
+        return new BigInteger(randomBytes).longValue();
+    }
+    
+    // ~ private fields and constructor ---------------------------------------
+    
+    // the current token value
+    private final AtomicLong _count;
+    private boolean _flashScopeDisabled;
+    
+    public FlashImpl(ExternalContext externalContext)
+    {
+        _count = new AtomicLong(_getSeed());
+
+        // Read whether flash scope is disabled.
+        _flashScopeDisabled = "true".equalsIgnoreCase(externalContext.getInitParameter(FLASH_SCOPE_DISABLED_PARAM));
+    }
+    
+    // ~ methods from javax.faces.context.Flash -------------------------------
+
+    /**
+     * Used to restore the redirect value and the FacesMessages of the previous 
+     * request and to manage the flashMap tokens for this request before phase
+     * restore view starts.
+     */
+    @Override
+    public void doPrePhaseActions(FacesContext facesContext)
+    {
+        if (!_flashScopeDisabled)
+        {
+            final PhaseId currentPhaseId = facesContext.getCurrentPhaseId();
+        
+            if (PhaseId.RESTORE_VIEW.equals(currentPhaseId))
+            {
+                // restore the redirect value
+                // note that the result of this method is used in many places, 
+                // thus it has to be the first thing to do
+                _restoreRedirectValue(facesContext);
+            
+                // restore the FlashMap token from the previous request
+                // and create a new token for this request
+                _manageFlashMapTokens(facesContext);
+            
+                // try to restore any saved messages
+                _restoreMessages(facesContext);
+            }
+        }
+    }
+    
+    /**
+     * Used to destroy the executeMap and to save all FacesMessages for the
+     * next request, but only if this is the last invocation of this method
+     * in the current lifecycle (if redirect phase 5, otherwise phase 6).
+     */
+    @Override
+    public void doPostPhaseActions(FacesContext facesContext)
+    {
+        if (!_flashScopeDisabled)
+        {
+            // do the actions only if this is the last time
+            // doPostPhaseActions() is called on this request
+            if (_isLastPhaseInRequest(facesContext))
+            {
+                if (_isRedirectTrueOnThisRequest(facesContext))
+                {
+                    // copy entries from executeMap to renderMap, if they do not exist
+                    Map<String, Object> renderMap = _getRenderFlashMap(facesContext);
+
+                    for (Map.Entry<String, Object> entry 
+                        : _getExecuteFlashMap(facesContext).entrySet())
+                    {
+                        if (!renderMap.containsKey(entry.getKey()))
+                        {
+                            renderMap.put(entry.getKey(), entry.getValue());
+                        }
+                    }
+                }
+            
+                // remove execute Map entries from session (--> "destroy" executeMap)
+                _clearExecuteFlashMap(facesContext);
+            
+                // save the current FacesMessages in the renderMap, if wanted
+                // Note that this also works on a redirect even though the redirect
+                // was already performed and the response has already been committed,
+                // because the renderMap is stored in the session.
+                _saveMessages(facesContext);
+            }
+        }
+    }
+    
+    /**
+     * Return the value of this property for the flash for this session.
+     * 
+     * This must be false unless:
+     *   - setRedirect(boolean) was called for the current lifecycle traversal
+     *     with true as the argument.
+     *   - The current lifecycle traversal for this session is in the "execute"
+     *     phase and the previous traversal had setRedirect(boolean) called with
+     *     true as the argument.
+     */
+    @Override
+    public boolean isRedirect()
+    {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        boolean thisRedirect = _isRedirectTrueOnThisRequest(facesContext);
+        boolean prevRedirect = _isRedirectTrueOnPreviousRequest(facesContext);
+        boolean executePhase = !PhaseId.RENDER_RESPONSE.equals(facesContext.getCurrentPhaseId());
+        
+        return thisRedirect || (executePhase && prevRedirect);
+    }
+    
+    @Override
+    public void setRedirect(boolean redirect)
+    {
+        // FIXME this method has a design flaw, because the only valid value
+        // is true and it should only be called by the NavigationHandler
+        // in a redirect case RIGHT BEFORE ExternalContext.redirect().
+        // Maybe a PreRedirectEvent issued by the ExternalContext would be a good
+        // choice for JSF 2.1.
+        
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        ExternalContext externalContext = facesContext.getExternalContext();
+        Map<String, Object> requestMap = externalContext.getRequestMap();
+        
+        // save the value on the requestMap for this request
+        Boolean alreadySet = (Boolean) requestMap.get(FLASH_REDIRECT);
+        alreadySet = (alreadySet == null ? Boolean.FALSE : Boolean.TRUE);
+        
+        // if true and not already set, store it for the following request
+        if (!alreadySet && redirect)
+        {
+            requestMap.put(FLASH_REDIRECT, Boolean.TRUE);
+            
+            // save redirect=true for the next request
+            _saveRedirectValue(facesContext);
+        }
+        else
+        {
+            if (alreadySet)
+            {
+                logger.warning("Multiple call to setRedirect() ignored.");
+            }
+            else // redirect = false
+            {
+                logger.warning("Ignored call to setRedirect(false), because this "
+                        + "should only be set to true by the NavigationHandler. "
+                        + "No one else should change it.");
+            }
+        }
+    }
+    
+    /**
+     * Take a value from the requestMap, or if it does not exist from the
+     * execute FlashMap, and put it on the render FlashMap, so it is visible on
+     * the next request.
+     */
+    @Override
+    public void keep(String key)
+    {
+        _checkFlashScopeDisabled();
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        Map<String, Object> requestMap = facesContext.getExternalContext().getRequestMap();
+        Object value = requestMap.get(key);
+        
+        // if the key does not exist in the requestMap,
+        // try to get it from the execute FlashMap
+        if (value == null)
+        {
+            Map<String, Object> executeMap = _getExecuteFlashMap(facesContext);
+            // Null-check, because in the GET request of a POST-REDIRECT-GET 
+            // pattern there is no execute map
+            if (executeMap != null)
+            {
+                value = executeMap.get(key);
+                // Store it on request map so we can get it later. For example, 
+                // this is used by org.apache.myfaces.el.FlashELResolver to return
+                // the value that has been promoted.
+                requestMap.put(key, value);
+            }
+        }
+        
+        // put it in the render FlashMap
+        _getRenderFlashMap(facesContext).put(key, value);
+    }
+
+    /**
+     * This is just an alias for the request scope map.
+     */
+    @Override
+    public void putNow(String key, Object value)
+    {
+        _checkFlashScopeDisabled();
+        FacesContext.getCurrentInstance().getExternalContext()
+                .getRequestMap().put(key, value);
+    }
+
+    /**
+     * Returns the value of a previous call to setKeepMessages() from this
+     * request. If there was no call yet, false is returned.
+     */
+    @Override
+    public boolean isKeepMessages()
+    {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        ExternalContext externalContext = facesContext.getExternalContext();
+        Map<String, Object> requestMap = externalContext.getRequestMap();
+        Boolean keepMessages = (Boolean) requestMap.get(FLASH_KEEP_MESSAGES);
+        
+        return (keepMessages == null ? Boolean.FALSE : keepMessages);
+    }
+    
+    /**
+     * If this property is true, the messages should be kept for the next 
+     * request, no matter if it is a normal postback case or a POST-
+     * REDIRECT-GET case.
+     * 
+     * Note that we don't have to store this value for the next request
+     * (like setRedirect()), because we will know if it was true on the 
+     * next request, if we can find any stored messages in the FlashMap.
+     * (also see _saveMessages() and _restoreMessages()).
+     */
+    @Override
+    public void setKeepMessages(boolean keepMessages)
+    {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        ExternalContext externalContext = facesContext.getExternalContext();
+        Map<String, Object> requestMap = externalContext.getRequestMap();
+        requestMap.put(FLASH_KEEP_MESSAGES, keepMessages);
+    }
+    
+    // ~ Methods from Map interface -------------------------------------------
+    
+    // NOTE that all these methods do not necessarily delegate to the same Map,
+    // because we differentiate between reading and writing operations.
+    
+    public void clear()
+    {
+        _checkFlashScopeDisabled();
+        _getFlashMapForWriting().clear();
+    }
+
+    public boolean containsKey(Object key)
+    {
+        _checkFlashScopeDisabled();
+        return _getFlashMapForReading().containsKey(key);
+    }
+
+    public boolean containsValue(Object value)
+    {
+        _checkFlashScopeDisabled();
+        return _getFlashMapForReading().containsValue(value);
+    }
+
+    public Set<java.util.Map.Entry<String, Object>> entrySet()
+    {
+        _checkFlashScopeDisabled();
+        return _getFlashMapForReading().entrySet();
+    }
+
+    public Object get(Object key)
+    {
+        _checkFlashScopeDisabled();
+        if (key == null)
+        {
+            return null;
+        }
+        
+        if ("keepMessages".equals(key))
+        {
+            return isKeepMessages();
+        }
+        else if ("redirect".equals(key))
+        {
+            return isRedirect();
+        }
+        
+        return _getFlashMapForReading().get(key);
+    }
+    
+    public boolean isEmpty()
+    {
+        _checkFlashScopeDisabled();
+        return _getFlashMapForReading().isEmpty();
+    }
+
+    public Set<String> keySet()
+    {
+        _checkFlashScopeDisabled();
+        return _getFlashMapForReading().keySet();
+    }
+
+    public Object put(String key, Object value)
+    {
+        _checkFlashScopeDisabled();
+        if (key == null)
+        {
+            return null;
+        }
+        
+        if ("keepMessages".equals(key))
+        {
+            Boolean booleanValue = _convertToBoolean(value);
+            this.setKeepMessages(booleanValue);
+            return booleanValue;
+        }
+        else if ("redirect".equals(key))
+        {
+            Boolean booleanValue = _convertToBoolean(value);
+            this.setRedirect(booleanValue);
+            return booleanValue;
+        }
+        else
+        {
+            return _getFlashMapForWriting().put(key, value); 
+        }
+    }
+
+    public void putAll(Map<? extends String, ? extends Object> m)
+    {
+        _checkFlashScopeDisabled();
+        _getFlashMapForWriting().putAll(m);
+    }
+
+    public Object remove(Object key)
+    {
+        _checkFlashScopeDisabled();
+        return _getFlashMapForWriting().remove(key);
+    }
+
+    public int size()
+    {
+        _checkFlashScopeDisabled();
+        return _getFlashMapForReading().size();
+    }
+
+    public Collection<Object> values()
+    {
+        _checkFlashScopeDisabled();
+        return _getFlashMapForReading().values();
+    }
+    
+    // ~ Implementation methods ----------------------------------------------- 
+    
+    /**
+     * Returns true if the current phase is the last phase in the request
+     * and thus if doPostPhaseActions() is called for the last time.
+     * 
+     * This will be true if either we are in phase 6 (render response)
+     * or if setRedirect(true) was called on this request and we are
+     * in phase 5 (invoke application).
+     */
+    private boolean _isLastPhaseInRequest(FacesContext facesContext)
+    {
+        final PhaseId currentPhaseId = facesContext.getCurrentPhaseId();
+        
+        boolean lastPhaseNormalRequest = PhaseId.RENDER_RESPONSE.equals(currentPhaseId);
+        boolean lastPhaseIfRedirect = PhaseId.INVOKE_APPLICATION.equals(currentPhaseId) 
+                && _isRedirectTrueOnThisRequest(facesContext);
+        
+        return lastPhaseNormalRequest || lastPhaseIfRedirect;
+    }
+    
+    /**
+     * Return true if setRedirect(true) was called on this request.
+     * @param facesContext
+     * @return
+     */
+    private boolean _isRedirectTrueOnThisRequest(FacesContext facesContext)
+    {
+        ExternalContext externalContext = facesContext.getExternalContext();
+        Map<String, Object> requestMap = externalContext.getRequestMap();
+        Boolean redirect = (Boolean) requestMap.get(FLASH_REDIRECT);
+        
+        return Boolean.TRUE.equals(redirect);
+    }
+    
+    /**
+     * Return true if setRedirect(true) was called on the previous request.
+     * Precondition: doPrePhaseActions() must have been called on restore view phase.
+     * @param facesContext
+     * @return
+     */
+    private boolean _isRedirectTrueOnPreviousRequest(FacesContext facesContext)
+    {
+        ExternalContext externalContext = facesContext.getExternalContext();
+        Map<String, Object> requestMap = externalContext.getRequestMap();
+        Boolean redirect = (Boolean) requestMap.get(FLASH_PREVIOUS_REQUEST_REDIRECT);
+        
+        return Boolean.TRUE.equals(redirect);
+    }
+    
+    /**
+     * Saves the value of setRedirect() for the next request, if it was true
+     */
+    private void _saveRedirectValue(FacesContext facesContext)
+    {
+        ExternalContext externalContext = facesContext.getExternalContext();
+        
+        // This request contains a redirect. This condition is in general 
+        // triggered by a NavigationHandler. After a redirect all request scope
+        // values get lost, so in order to preserve this value we need to
+        // pass it between request. One strategy is use a cookie that is never sent
+        // to the client. Other alternative is use the session map.
+        // See _restoreRedirectValue() for restoring this value.
+        HttpServletResponse httpResponse = ExternalContextUtils
+                .getHttpServletResponse(externalContext);
+        if (httpResponse != null)
+        {
+            Cookie cookie = _createFlashCookie(FLASH_REDIRECT, "true", externalContext);
+            httpResponse.addCookie(cookie);
+        }
+        else
+        {
+            externalContext.getSessionMap().put(FLASH_REDIRECT, true);
+        }
+    }
+
+    /**
+     * Restores the redirect value of the previous request and saves
+     * it in the RequestMap under the key FLASH_PREVIOUS_REQUEST_REDIRECT.
+     * Must not be called more than once per request.
+     * After this method was invoked, the requestMap will contain Boolean.TRUE
+     * if setRedirect(true) was called on the previous request or Boolean.FALSE
+     * or null otherwise.
+     */
+    private void _restoreRedirectValue(FacesContext facesContext)
+    {
+        ExternalContext externalContext = facesContext.getExternalContext();
+        HttpServletResponse httpResponse = ExternalContextUtils
+                .getHttpServletResponse(externalContext);
+        if (httpResponse != null)
+        {
+            // Request values are lost after a redirect. We can create a 
+            // temporal cookie to pass the params between redirect calls.
+            // It is better than use HttpSession object, because this cookie
+            // is never sent by the server.
+            Cookie cookie = (Cookie) externalContext
+                    .getRequestCookieMap().get(FLASH_REDIRECT);
+            if (cookie != null)
+            {
+                // the cookie exists means there was a redirect, regardless of the value
+                externalContext.getRequestMap().put(
+                        FLASH_PREVIOUS_REQUEST_REDIRECT, Boolean.TRUE);
+                
+                // A redirect happened, so it is safe to remove the cookie, setting
+                // the maxAge to 0 seconds. The effect is we passed FLASH_REDIRECT param 
+                // to this request object
+                cookie.setMaxAge(0);
+                cookie.setPath(_getCookiePath(externalContext));
+                cookie.setValue(null);
+                httpResponse.addCookie(cookie);
+            }
+        }
+        else
+        {
+            // Note that on portlet world we can't create cookies,
+            // so we are forced to use the session map. Anyway, 
+            // according to the Bridge implementation(for example see 
+            // org.apache.myfaces.portlet.faces.bridge.BridgeImpl)
+            // session object is created at start faces request
+            Map<String, Object> sessionMap = externalContext.getSessionMap();
+            
+            // remove the value from the sessionMap
+            Boolean redirect = (Boolean) sessionMap.remove(FLASH_REDIRECT);
+            
+            // put the value into the requestMap
+            externalContext.getRequestMap().put(
+                    FLASH_PREVIOUS_REQUEST_REDIRECT, redirect);
+        }
+    }
+    
+    /**
+     * Saves the current FacesMessages as a List on the render FlashMap for the
+     * next request if isKeepMessages() is true. Otherwise it removes any
+     * existing FacesMessages-List from the renderFlashMap. 
+     * @param facesContext
+     */
+    private void _saveMessages(FacesContext facesContext)
+    {
+        if (isKeepMessages()) 
+        {
+            // get all messages from the FacesContext and store
+            // them on the renderMap
+            List<MessageEntry> messageList = null;
+                
+            Iterator<String> iterClientIds = facesContext.getClientIdsWithMessages();
+            while (iterClientIds.hasNext())
+            {
+                String clientId = (String) iterClientIds.next();
+                Iterator<FacesMessage> iterMessages = facesContext.getMessages(clientId);
+                
+                while (iterMessages.hasNext())
+                {
+                    FacesMessage message = iterMessages.next();
+    
+                    if (messageList == null)
+                    {
+                        messageList = new ArrayList<MessageEntry>();
+                    }
+                    messageList.add(new MessageEntry(clientId, message));
+                }
+            }
+    
+            _getRenderFlashMap(facesContext).put(FLASH_KEEP_MESSAGES_LIST, messageList);
+        }
+        else
+        {
+            // do not keep messages --> remove messagesList from renderMap
+            _getRenderFlashMap(facesContext).remove(FLASH_KEEP_MESSAGES_LIST);
+        }
+    }
+
+    /**
+     * Restore any saved FacesMessages from the previous request.
+     * Note that we don't need to save the keepMessages value for this request,
+     * because we just have to check if the value for FLASH_KEEP_MESSAGES_LIST exists.
+     * @param facesContext
+     */
+    @SuppressWarnings("unchecked")
+    private void _restoreMessages(FacesContext facesContext)
+    {
+        List<MessageEntry> messageList = (List<MessageEntry>) 
+                _getExecuteFlashMap(facesContext).get(FLASH_KEEP_MESSAGES_LIST);
+
+        if (messageList != null)
+        {
+            Iterator<MessageEntry> iterMessages = messageList.iterator();
+
+            while (iterMessages.hasNext())
+            {
+                MessageEntry entry = iterMessages.next();
+                facesContext.addMessage(entry.clientId, entry.message);
+            }
+
+            // we can now remove the messagesList from the flashMap
+            _getExecuteFlashMap(facesContext).remove(FLASH_KEEP_MESSAGES_LIST);
+        }
+    }
+    
+    /**
+     * Take the render map key and store it as a key for the next request.
+     * 
+     * On the next request we can get it with _getRenderFlashMapTokenFromPreviousRequest().
+     * @param externalContext
+     */
+    private void _saveRenderFlashMapTokenForNextRequest(ExternalContext externalContext)
+    {
+        String tokenValue = (String) externalContext.getRequestMap().get(FLASH_RENDER_MAP_TOKEN);
+        
+        HttpServletResponse httpResponse = ExternalContextUtils.getHttpServletResponse(externalContext);
+        if (httpResponse != null)
+        {
+            Cookie cookie = _createFlashCookie(FLASH_RENDER_MAP_TOKEN, tokenValue, externalContext);
+            httpResponse.addCookie(cookie);
+        }
+        else
+        {
+            //Use HttpSession or PortletSession object
+            Map<String, Object> sessionMap = externalContext.getSessionMap();
+            sessionMap.put(FLASH_RENDER_MAP_TOKEN, tokenValue);
+        }
+    }
+    
+    /**
+     * Retrieve the map token of the render map from the previous request.
+     * 
+     * Returns the value of _saveRenderFlashMapTokenForNextRequest() from
+     * the previous request.
+     * @param externalContext
+     * @return
+     */
+    private String _getRenderFlashMapTokenFromPreviousRequest(ExternalContext externalContext)
+    {
+        String tokenValue = null;
+        HttpServletResponse httpResponse = ExternalContextUtils.getHttpServletResponse(externalContext);
+        if (httpResponse != null)
+        {
+            //Use a cookie
+            Cookie cookie = (Cookie) externalContext.getRequestCookieMap().get(FLASH_RENDER_MAP_TOKEN);
+            if (cookie != null)
+            {
+                tokenValue = cookie.getValue();
+            }
+        }
+        else
+        {
+            //Use HttpSession or PortletSession object
+            Map<String, Object> sessionMap = externalContext.getSessionMap();
+            tokenValue = (String) sessionMap.get(FLASH_RENDER_MAP_TOKEN);
+        }
+        return tokenValue;
+    }
+    
+    /**
+     * Restores the render FlashMap token from the previous request.
+     * This is the token of the executeMap for this request.
+     * Furthermore it also creates a new token for this request's renderMap
+     * (and thus implicitly a new renderMap).
+     * @param facesContext
+     */
+    private void _manageFlashMapTokens(FacesContext facesContext)
+    {
+        ExternalContext externalContext = facesContext.getExternalContext();
+        Map<String, Object> requestMap = externalContext.getRequestMap();
+
+        final String previousRenderToken 
+                = _getRenderFlashMapTokenFromPreviousRequest(externalContext);
+        if (previousRenderToken != null)
+        {
+            // "restore" the renderMap from the previous request
+            // and put it as the executeMap for this request
+            requestMap.put(FLASH_EXECUTE_MAP_TOKEN, previousRenderToken);
+        }
+        else
+        {
+            if (facesContext.isPostback())
+            {
+                // on a postback, we should always have a previousToken
+                logger.warning("Identifier for execute FlashMap was lost on " +
+                        "the postback, thus FlashScope information is gone.");
+            }
+            
+            // create a new token (and thus a new Map) for this request's 
+            // executeMap so that we have an executeMap in any possible case.
+            final String newExecuteToken = _getNextToken();
+            requestMap.put(FLASH_EXECUTE_MAP_TOKEN, newExecuteToken);
+        }
+        
+        // create a new token (and thus a new Map) for this request's renderMap
+        final String newRenderToken = _getNextToken();
+        requestMap.put(FLASH_RENDER_MAP_TOKEN, newRenderToken);
+        
+        // we now have the final render token for this request, thus we can
+        // already save it for the next request, because it won't change
+        _saveRenderFlashMapTokenForNextRequest(externalContext);
+    }
+    
+    /**
+     * Get the next token to be assigned to this request
+     * 
+     * @return
+     */
+    private String _getNextToken()
+    {
+        // atomically increment the value
+        long nextToken = _count.incrementAndGet();
+
+        // convert using base 36 because it is a fast efficient subset of base-64
+        return Long.toString(nextToken, 36);
+    }
+
+    /**
+     * Create a new subkey-wrapper of the session map with the given prefix.
+     * This wrapper is used to implement the maps for the flash scope.
+     * For more information see the SubKeyMap doc.
+     */
+    private Map<String, Object> _createSubKeyMap(FacesContext context, String prefix)
+    {
+        ExternalContext external = context.getExternalContext();
+        Map<String, Object> sessionMap = external.getSessionMap();
+
+        return new SubKeyMap<Object>(sessionMap, prefix);
+    }
+
+    /**
+     * Return the flash map created on this traversal.
+     * 
+     * This FlashMap will be the execute FlashMap of the next traversal.
+     * 
+     * Note that it is supposed that FLASH_RENDER_MAP_TOKEN is initialized
+     * before restore view phase (see doPrePhaseActions() for details).
+     * 
+     * @param context
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    private Map<String, Object> _getRenderFlashMap(FacesContext context)
+    {
+        // Note that we don't have to synchronize here, because it is no problem
+        // if we create more SubKeyMaps with the same subkey, because they are
+        // totally equal and point to the same entries in the SessionMap.
+        
+        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+        Map<String, Object> map = (Map<String, Object>) requestMap.get(FLASH_RENDER_MAP);
+        if (map == null)
+        {
+            String token = (String) requestMap.get(FLASH_RENDER_MAP_TOKEN);
+            String fullToken = FLASH_SESSION_MAP_SUBKEY_PREFIX + SEPARATOR_CHAR + token;
+            map =  _createSubKeyMap(context, fullToken);
+            requestMap.put(FLASH_RENDER_MAP, map);
+        }
+        return map;
+    }
+    
+    /**
+     * Return the execute Flash Map.
+     * 
+     * This FlashMap was the render FlashMap of the previous traversal. 
+     * 
+     * @param context
+     * @return
+     */
+    @SuppressWarnings("unchecked")
+    private Map<String, Object> _getExecuteFlashMap(FacesContext context)
+    {
+        // Note that we don't have to synchronize here, because it is no problem
+        // if we create more SubKeyMaps with the same subkey, because they are
+        // totally equal and point to the same entries in the SessionMap.
+        
+        Map<String, Object> requestMap = context.getExternalContext().getRequestMap();
+        Map<String, Object> map = (Map<String, Object>) requestMap.get(FLASH_EXECUTE_MAP);
+        if (map == null)
+        {
+            String token = (String) requestMap.get(FLASH_EXECUTE_MAP_TOKEN);
+            String fullToken = FLASH_SESSION_MAP_SUBKEY_PREFIX + SEPARATOR_CHAR + token;
+            map = _createSubKeyMap(context, fullToken);
+            requestMap.put(FLASH_EXECUTE_MAP, map);
+        }
+        return map;
+    }
+    
+    /**
+     * Get the proper map according to the current phase:
+     * 
+     * Normal case:
+     * 
+     * - First request, restore view phase (create a new one): render map n
+     * - First request, execute phase: Skipped
+     * - First request, render  phase: render map n
+     * 
+     *   Render map n saved and put as execute map n
+     * 
+     * - Second request, execute phase: execute map n
+     * - Second request, render  phase: render map n+1
+     * 
+     * Post Redirect Get case: Redirect is triggered by a call to setRedirect(true) from NavigationHandler
+     * or earlier using c:set tag.
+     * 
+     * - First request, restore view phase (create a new one): render map n
+     * - First request, execute phase: Skipped
+     * - First request, render  phase: render map n
+     * 
+     *   Render map n saved and put as execute map n
+     * 
+     * POST
+     * 
+     * - Second request, execute phase: execute map n
+     *   Note that render map n+1 is also created here to perform keep().
+     * 
+     * REDIRECT
+     * 
+     * - NavigationHandler do the redirect, requestMap data lost, called Flash.setRedirect(true)
+     * 
+     *   Render map n+1 saved and put as render map n+1 on GET request.
+     * 
+     * GET
+     * 
+     * - Third  request, restore view phase (create a new one): render map n+1 (restorred)
+     *   (isRedirect() should return true as javadoc says)
+     * - Third  request, execute phase: skipped
+     * - Third  request, render  phase: render map n+1
+     * 
+     * In this way proper behavior is preserved even in the case of redirect, since the GET part is handled as
+     * the "render" part of the current traversal, keeping the semantic of flash object.
+     * 
+     * @return
+     */
+    private Map<String, Object> _getActiveFlashMap()
+    {
+        FacesContext facesContext = FacesContext.getCurrentInstance();
+        if (PhaseId.RENDER_RESPONSE.equals(facesContext.getCurrentPhaseId()) 
+                || !facesContext.isPostback())
+        {
+            return _getRenderFlashMap(facesContext);
+        }
+        else
+        {
+            return _getExecuteFlashMap(facesContext);
+        }
+    }
+    
+    /**
+     * Returns the FlashMap used in the reading methods of java.util.Map
+     * like e.g. get() or values().
+     * @return
+     */
+    private Map<String, Object> _getFlashMapForReading()
+    {
+        return _getExecuteFlashMap(FacesContext.getCurrentInstance());
+    }
+    
+    /**
+     * Returns the FlashMap used in the writing methods of java.util.Map
+     * like e.g. put() or clear().
+     * @return
+     */
+    private Map<String, Object> _getFlashMapForWriting()
+    {
+        return _getActiveFlashMap();
+    }
+
+    /**
+     * Destroy the execute FlashMap, because it is not needed anymore.
+     * @param facesContext
+     */
+    private void _clearExecuteFlashMap(FacesContext facesContext)
+    {
+        Map<String, Object> map = _getExecuteFlashMap(facesContext);
+
+        // Clear everything - note that because of naming conventions,
+        // this will in fact automatically recurse through all children
+        // grandchildren etc. - which is kind of a design flaw of SubKeyMap,
+        // but one we're relying on
+        
+        // NOTE that we do not need a null check here, because there will
+        // always be an execute Map, however sometimes an empty one!
+        map.clear();
+    }
+
+    /**
+     * Creates a Cookie with the given name and value.
+     * In addition, it will be configured with maxAge=-1, the current request path and secure value.
+     *
+     * @param name
+     * @param value
+     * @param externalContext
+     * @return
+     */
+    private Cookie _createFlashCookie(String name, String value, ExternalContext externalContext)
+    {
+        Cookie cookie = new Cookie(name, value);
+
+        cookie.setMaxAge(-1);
+        cookie.setPath(_getCookiePath(externalContext));
+        cookie.setSecure(externalContext.isSecure());
+
+        return cookie;
+    }
+
+    /**
+     * Returns the path for the Flash-Cookies.
+     * @param externalContext
+     * @return
+     */
+    private String _getCookiePath(ExternalContext externalContext)
+    {
+        String contextPath = externalContext.getRequestContextPath();
+
+        if (contextPath == null || "".equals(contextPath))
+        {
+            contextPath = "/";
+        }
+
+        return contextPath;
+    }
+    
+    /**
+     * Convert the Object to a Boolean.
+     * @param value
+     * @return
+     */
+    private Boolean _convertToBoolean(Object value)
+    {
+        Boolean booleanValue;
+        if (value instanceof Boolean)
+        {
+            booleanValue = (Boolean) value;
+        }
+        else
+        {
+            booleanValue = Boolean.parseBoolean(value.toString());
+        }
+        return booleanValue;
+    }
+    
+    /**
+     * Checks whether flash scope is disabled.
+     * @throws FlashScopeDisabledException if flash scope is disabled
+     */
+    private void _checkFlashScopeDisabled()
+    {
+        if (_flashScopeDisabled) {
+            throw new FlashScopeDisabledException("Flash scope was disabled by context param " 
+                + FLASH_SCOPE_DISABLED_PARAM + " but erroneously accessed");
+        }
+    }
+    
+    // ~ Inner classes --------------------------------------------------------
+    
+    /**
+     * Class used to store a FacesMessage with its clientId.
+     */
+    private static class MessageEntry implements Serializable
+    {
+        private static final long serialVersionUID = -690264660230199234L;
+        private final String clientId;
+        private final FacesMessage message;
+
+        public MessageEntry(String clientId, FacesMessage message)
+        {
+            this.clientId = clientId;
+            this.message = message;
+        }
+    }
+    
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashScopeDisabledException.java b/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashScopeDisabledException.java
new file mode 100644
index 0000000..9979545
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashScopeDisabledException.java
@@ -0,0 +1,61 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.context.flash;
+
+import javax.faces.FacesException;
+
+/**
+ * @author Ganesh Jung (latest modification by $Author: $)
+ * @version $Revision: $ $Date: $
+ */
+public class FlashScopeDisabledException extends FacesException
+{
+
+    /**
+     * 
+     */
+    public FlashScopeDisabledException()
+    {
+    }
+
+    /**
+     * @param message
+     */
+    public FlashScopeDisabledException(String message)
+    {
+        super(message);
+    }
+
+    /**
+     * @param cause
+     */
+    public FlashScopeDisabledException(Throwable cause)
+    {
+        super(cause);
+    }
+
+    /**
+     * @param message
+     * @param cause
+     */
+    public FlashScopeDisabledException(String message, Throwable cause)
+    {
+        super(message, cause);
+    }
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/flash/SubKeyMap.java b/shared/src/main/java/org/apache/myfaces/shared/context/flash/SubKeyMap.java
new file mode 100644
index 0000000..4b8e3bb
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/flash/SubKeyMap.java
@@ -0,0 +1,286 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.context.flash;
+
+import java.util.AbstractMap;
+import java.util.AbstractSet;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * NOTE: Class copied from trinidad to be used on FlashImpl.
+ * 
+ * Map that wraps another to provide an isolated namespace using
+ * a prefix.  This is especially handy for storing properties on
+ * the session in a structured manner without putting them into
+ * a true "Map" - because storing in a Map breaks session failover.
+ * (Session failover won't trigger on mutations of contained objects.)
+ * <p>
+ * Note that there is a potential design flaw;  if you create a SubKeyMap
+ * for "mypackage.foo" and for "mypackage.foo.bar", all the keys in the
+ * latter will actually show up in the former (prefixed by ".bar").  This
+ * "flaw" is actually relied on by PageFlowScopeMap (since it provides
+ * a handy way to clear out all descendents), so don't "fix" it!
+ */
+final class SubKeyMap<V> extends AbstractMap<String, V>
+{
+    public SubKeyMap(Map<String, Object> base, String prefix)
+    {
+        if (base == null)
+            throw new NullPointerException();
+        if (prefix == null)
+            throw new NullPointerException();
+
+        // Optimize the scenario where we're wrapping another SubKeyMap
+        if (base instanceof SubKeyMap)
+        {
+            _base = ((SubKeyMap) base)._base;
+            _prefix = ((SubKeyMap) base)._prefix + prefix;
+        }
+        else
+        {
+            _base = base;
+            _prefix = prefix;
+        }
+    }
+
+    @Override
+    public boolean isEmpty()
+    {
+        return entrySet().isEmpty();
+    }
+
+    @Override
+    public V get(Object key)
+    {
+        key = _getBaseKey(key);
+        return (V) _base.get(key);
+    }
+
+    @Override
+    public V put(String key, V value)
+    {
+        key = _getBaseKey(key);
+        return (V) _base.put(key, value);
+    }
+
+    @Override
+    public V remove(Object key)
+    {
+        key = _getBaseKey(key);
+        return (V) _base.remove(key);
+    }
+
+    @Override
+    public boolean containsKey(Object key)
+    {
+        if (!(key instanceof String))
+            return false;
+
+        return _base.containsKey(_getBaseKey(key));
+    }
+
+    @Override
+    public Set<Map.Entry<String, V>> entrySet()
+    {
+        if (_entrySet == null)
+            _entrySet = new Entries<V>();
+        return _entrySet;
+    }
+
+    private String _getBaseKey(Object key)
+    {
+        if (key == null)
+            throw new NullPointerException();
+        // Yes, I want a ClassCastException if it's not a String
+        return _prefix + ((String) key);
+    }
+
+    private List<String> _gatherKeys()
+    {
+        List<String> list = new ArrayList<String>();
+        for (String key : _base.keySet())
+        {
+            if (key != null && key.startsWith(_prefix))
+                list.add(key);
+        }
+
+        return list;
+    }
+
+    //
+    // Set implementation for SubkeyMap.entrySet()
+    //
+    private class Entries<V> extends AbstractSet<Map.Entry<String, V>>
+    {
+        public Entries()
+        {
+        }
+
+        @Override
+        public Iterator<Map.Entry<String, V>> iterator()
+        {
+            // Sadly, if you just try to use a filtering approach
+            // on the iterator, you'll get concurrent modification
+            // exceptions.  Consequently, gather the keys in a list
+            // and iterator over that.
+            List<String> keyList = _gatherKeys();
+            return new EntryIterator<V>(keyList.iterator());
+        }
+
+        @Override
+        public int size()
+        {
+            int size = 0;
+            for (String key : _base.keySet())
+            {
+                if (key != null && key.startsWith(_prefix))
+                    size++;
+            }
+
+            return size;
+        }
+
+        @Override
+        public boolean isEmpty()
+        {
+            Iterator<String> keys = _base.keySet().iterator();
+            while (keys.hasNext())
+            {
+                String key = keys.next();
+                // Short-circuit:  the default implementation would always
+                // need to iterate to find the total size.
+                if (key != null && key.startsWith(_prefix))
+                    return false;
+            }
+
+            return true;
+        }
+
+        @Override
+        public void clear()
+        {
+            Iterator<String> keys = _base.keySet().iterator();
+            while (keys.hasNext())
+            {
+                String key = keys.next();
+                if (key != null && key.startsWith(_prefix))
+                {
+                    keys.remove();
+                }
+            }
+        }
+    }
+
+    private class EntryIterator<V> implements Iterator<Map.Entry<String, V>>
+    {
+        public EntryIterator(Iterator<String> iterator)
+        {
+            _iterator = iterator;
+        }
+
+        public boolean hasNext()
+        {
+            return _iterator.hasNext();
+        }
+
+        public Map.Entry<String, V> next()
+        {
+            String baseKey = _iterator.next();
+            _currentKey = baseKey;
+            return new Entry<V>(baseKey);
+        }
+
+        public void remove()
+        {
+            if (_currentKey == null)
+                throw new IllegalStateException();
+
+            _base.remove(_currentKey);
+
+            _currentKey = null;
+        }
+
+        private Iterator<String> _iterator;
+        private String _currentKey;
+    }
+
+    private class Entry<V> implements Map.Entry<String, V>
+    {
+        public Entry(String baseKey)
+        {
+            _baseKey = baseKey;
+        }
+
+        public String getKey()
+        {
+            if (_key == null)
+                _key = _baseKey.substring(_prefix.length());
+            return _key;
+        }
+
+        public V getValue()
+        {
+            return (V) _base.get(_baseKey);
+        }
+
+        public V setValue(V value)
+        {
+            return (V) _base.put(_baseKey, value);
+        }
+
+        @SuppressWarnings("unchecked")
+        @Override
+        public boolean equals(Object o)
+        {
+            if (!(o instanceof Map.Entry))
+                return false;
+            Map.Entry<String, V> e = (Map.Entry<String, V>) o;
+            return _equals(getKey(), e.getKey())
+                    && _equals(getValue(), e.getValue());
+        }
+
+        @Override
+        public int hashCode()
+        {
+            Object key = getKey();
+            Object value = getValue();
+            return ((key == null) ? 0 : key.hashCode())
+                    ^ ((value == null) ? 0 : value.hashCode());
+        }
+
+        private String _baseKey;
+        private String _key;
+    }
+
+    static private boolean _equals(Object a, Object b)
+    {
+        if (a == null)
+            return b == null;
+        return a.equals(b);
+    }
+
+    private final Map<String, Object> _base;
+    private final String _prefix;
+    private Set<Map.Entry<String, V>> _entrySet;
+
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/el/SimpleActionMethodBinding.java b/shared/src/main/java/org/apache/myfaces/shared/el/SimpleActionMethodBinding.java
new file mode 100755
index 0000000..c121ce5
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/el/SimpleActionMethodBinding.java
@@ -0,0 +1,90 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.el;
+
+import javax.faces.component.StateHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.MethodBinding;
+import javax.faces.el.MethodNotFoundException;
+
+/**
+ * Convenient method binding that does nothing other than returning a fixed outcome String when invoked.
+ *
+ * @author Manfred Geiler
+ */
+public class SimpleActionMethodBinding
+        extends MethodBinding
+        implements StateHolder
+{
+    private String _outcome;
+
+    public SimpleActionMethodBinding(String outcome)
+    {
+        _outcome = outcome;
+    }
+
+    public Object invoke(FacesContext facescontext, Object aobj[]) throws EvaluationException, MethodNotFoundException
+    {
+        return _outcome;
+    }
+
+    public Class getType(FacesContext facescontext) throws MethodNotFoundException
+    {
+        return String.class;
+    }
+
+
+    //~ StateHolder support ----------------------------------------------------------------------------
+
+    private boolean _transient = false;
+
+    /**
+     * Empty constructor, so that new instances can be created when restoring state.
+     */
+    public SimpleActionMethodBinding()
+    {
+        _outcome = null;
+    }
+
+    public Object saveState(FacesContext facescontext)
+    {
+        return _outcome;
+    }
+
+    public void restoreState(FacesContext facescontext, Object obj)
+    {
+        _outcome = (String)obj;
+    }
+
+    public boolean isTransient()
+    {
+        return _transient;
+    }
+
+    public void setTransient(boolean flag)
+    {
+        _transient = flag;
+    }
+
+    public String toString()
+    {
+        return _outcome;
+    }
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/readme.txt b/shared/src/main/java/org/apache/myfaces/shared/readme.txt
new file mode 100755
index 0000000..ca8bdc2
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/readme.txt
@@ -0,0 +1,5 @@
+MyFaces shared sources
+======================
+
+This source tree contains all classes that are shared among
+the MyFaces implementation and the MyFaces components classes.
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/ClientBehaviorEvents.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/ClientBehaviorEvents.java
new file mode 100644
index 0000000..b9dd627
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/ClientBehaviorEvents.java
@@ -0,0 +1,48 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit;
+
+public interface ClientBehaviorEvents
+{
+    String BLUR = "blur";
+    String FOCUS = "focus";
+    
+    //VALUECHANGE and CHANGE are rendered in onchange
+    String VALUECHANGE = "valueChange";
+    String CHANGE = "change";
+    String SELECT = "select";
+    
+    //ACTION and CLICK are rendered in onclick
+    String ACTION = "action";
+    String CLICK = "click";
+    String DBLCLICK = "dblclick";
+    
+    String KEYDOWN = "keydown";
+    String KEYPRESS = "keypress";
+    String KEYUP = "keyup";
+    
+    String MOUSEDOWN = "mousedown";
+    String MOUSEMOVE = "mousemove";
+    String MOUSEOUT = "mouseout";
+    String MOUSEOVER = "mouseover";
+    String MOUSEUP = "mouseup";
+    
+    String LOAD = "load";
+    String UNLOAD = "unload";
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java
new file mode 100755
index 0000000..af1401a
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java
@@ -0,0 +1,169 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit;
+
+
+/**
+ * Constant declarations for JSF tags
+ * @author Anton Koinov (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public interface JSFAttr
+{
+    //~ Static fields/initializers -----------------------------------------------------------------
+
+    // Common Attributes
+    String   ID_ATTR                        = "id";
+    String   VALUE_ATTR                     = "value";
+    String   BINDING_ATTR                   = "binding";
+    String   STYLE_ATTR                     = "style";
+    String   STYLE_CLASS_ATTR               = "styleClass";
+    String   ESCAPE_ATTR                    = "escape";
+    String   FORCE_ID_ATTR                  = "forceId";
+    String   FORCE_ID_INDEX_ATTR            = "forceIdIndex";
+    String   RENDERED                       = "rendered";
+
+    // Common Output Attributes
+    String   FOR_ATTR                       = "for";
+    String   CONVERTER_ATTR                 = "converter";
+
+    // Ouput_Time Attributes
+    String   TIME_STYLE_ATTR                = "timeStyle";
+    String   TIMEZONE_ATTR                  = "timezone";
+
+    // Common Input Attributes
+    String   REQUIRED_ATTR                  = "required";
+    String   VALIDATOR_ATTR                 = "validator";
+    String   DISABLED_ATTR                  = "disabled";
+    String   READONLY_ATTR                  = "readonly";
+
+    // Input_Secret Attributes
+    String   REDISPLAY_ATTR                 = "redisplay";
+
+    // Input_Checkbox Attributes
+    String   LAYOUT_ATTR                    = "layout";
+
+    // Select_Menu Attributes
+    String   SIZE_ATTR                     = "size";
+
+    // SelectMany Checkbox List/ Select One Radio Attributes
+    String BORDER_ATTR                   = "border";
+    String DISABLED_CLASS_ATTR           = "disabledClass";
+    String ENABLED_CLASS_ATTR            = "enabledClass";
+    String SELECTED_CLASS_ATTR           = "selectedClass";
+    String UNSELECTED_CLASS_ATTR         = "unselectedClass";
+    String HIDE_NO_SELECTION_OPTION_ATTR = "hideNoSelectionOption";
+
+    // Common Command Attributes
+    /**@deprecated */
+    String   COMMAND_CLASS_ATTR           = "commandClass";
+    String   LABEL_ATTR                   = "label";
+    String   IMAGE_ATTR                   = "image";
+    String   ACTION_ATTR                 = "action";
+    String   IMMEDIATE_ATTR              = "immediate";
+
+
+    // Command_Button Attributes
+    String   TYPE_ATTR                    = "type";
+
+    // Common Panel Attributes
+    /**@deprecated */
+    String   PANEL_CLASS_ATTR       = "panelClass";
+    String   FOOTER_CLASS_ATTR      = "footerClass";
+    String   HEADER_CLASS_ATTR      = "headerClass";
+    String   COLUMN_CLASSES_ATTR    = "columnClasses";
+    String   ROW_CLASSES_ATTR       = "rowClasses";
+    String   BODYROWS_ATTR          = "bodyrows";
+
+    // Panel_Grid Attributes
+    String   COLUMNS_ATTR          = "columns";
+    String   COLSPAN_ATTR          = "colspan"; // extension
+    String   CAPTION_CLASS_ATTR    = "captionClass";
+    String   CAPTION_STYLE_ATTR    = "captionStyle";
+
+    // UIMessage and UIMessages attributes
+    String SHOW_SUMMARY_ATTR            = "showSummary";
+    String SHOW_DETAIL_ATTR             = "showDetail";
+    String GLOBAL_ONLY_ATTR             = "globalOnly";
+
+    // HtmlOutputMessage attributes
+    String ERROR_CLASS_ATTR            = "errorClass";
+    String ERROR_STYLE_ATTR            = "errorStyle";
+    String FATAL_CLASS_ATTR            = "fatalClass";
+    String FATAL_STYLE_ATTR            = "fatalStyle";
+    String INFO_CLASS_ATTR             = "infoClass";
+    String INFO_STYLE_ATTR             = "infoStyle";
+    String WARN_CLASS_ATTR             = "warnClass";
+    String WARN_STYLE_ATTR             = "warnStyle";
+    String TITLE_ATTR                  = "title";
+    String TOOLTIP_ATTR                = "tooltip";
+    
+    // HtmlOutputLink Attributes
+    String FRAGMENT_ATTR               = "fragment";
+
+    // GraphicImage attributes
+    String NAME_ATTR                   = "name";
+    String URL_ATTR                    = "url";
+    String LIBRARY_ATTR                = "library";
+    
+    // HtmlOutputScript (missing) attributes
+    String TARGET_ATTR                 = "target";
+    
+    // UISelectItem attributes
+    String ITEM_DISABLED_ATTR          = "itemDisabled";
+    String ITEM_DESCRIPTION_ATTR       = "itemDescription";
+    String ITEM_LABEL_ATTR             = "itemLabel";
+    String ITEM_VALUE_ATTR             = "itemValue";
+    String ITEM_ESCAPED_ATTR           = "itemEscaped";
+    String NO_SELECTION_OPTION_ATTR    = "noSelectionOption";
+    
+    // UISelectItems attributes
+    String ITEM_LABEL_ESCAPED_ATTR     = "itemLabelEscaped";
+    String NO_SELECTION_VALUE_ATTR     = "noSelectionValue";
+
+    // UIData attributes
+    String ROWS_ATTR                   = "rows";
+    String VAR_ATTR                    = "var";
+    String FIRST_ATTR                  = "first";
+
+    // dataTable (extended) attributes
+    String ROW_ID                      = "rowId";
+    String ROW_STYLECLASS_ATTR         = "rowStyleClass";
+    String ROW_STYLE_ATTR              = "rowStyle";
+    
+    // HtmlColumn attributes
+    String ROW_HEADER_ATTR             = "rowHeader";
+
+    // Alternate locations (instead of using AddResource)
+    String JAVASCRIPT_LOCATION         = "javascriptLocation";
+    String IMAGE_LOCATION              = "imageLocation";
+    String STYLE_LOCATION              = "styleLocation";
+
+    String ACCEPTCHARSET_ATTR          = "acceptcharset";
+    
+    //~ Myfaces Extensions -------------------------------------------------------------------------------
+
+    // UISortData attributes
+    String COLUMN_ATTR                 = "column";
+    String ASCENDING_ATTR              = "ascending";
+    
+    // HtmlSelectManyCheckbox attributes
+    String LAYOUT_WIDTH_ATTR           = "layoutWidth";
+
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java
new file mode 100755
index 0000000..5188b44
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java
@@ -0,0 +1,1354 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.Serializable;
+import java.lang.reflect.Array;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.el.ValueExpression;
+import javax.faces.FacesException;
+import javax.faces.FactoryFinder;
+import javax.faces.application.FacesMessage;
+import javax.faces.application.ProjectStage;
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.component.EditableValueHolder;
+import javax.faces.component.NamingContainer;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.UIInput;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UISelectMany;
+import javax.faces.component.UISelectOne;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.ValueHolder;
+import javax.faces.component.html.HtmlInputText;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.el.PropertyNotFoundException;
+import javax.faces.el.ValueBinding;
+import javax.faces.event.PhaseId;
+import javax.faces.model.SelectItem;
+import javax.faces.render.RenderKit;
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.ResponseStateManager;
+
+import org.apache.myfaces.shared.renderkit.html.util.FormInfo;
+import org.apache.myfaces.shared.util.HashMapUtils;
+import org.apache.myfaces.shared.util.SelectItemsIterator;
+
+/**
+ * @author Manfred Geiler (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public final class RendererUtils
+{
+    private RendererUtils(){
+        //nope
+    }
+    
+    //private static final Log log = LogFactory.getLog(RendererUtils.class);
+    private static final Logger log = Logger.getLogger(RendererUtils.class.getName());
+    
+    public static final String SELECT_ITEM_LIST_ATTR = RendererUtils.class.getName() + ".LIST";
+    public static final String EMPTY_STRING = "";
+    //This constant is no longer used by UISelectOne/UISelectMany instances
+    public static final Object NOTHING = new Serializable() {
+        public boolean equals(final Object o)
+        {
+            if (o != null)
+            {
+                if (o.getClass().equals(this.getClass()))
+                {
+                    return true;
+                }
+            }
+            return false;
+        }
+    };
+
+    public static final String ACTION_FOR_LIST = "org.apache.myfaces.ActionForList";
+    public static final String ACTION_FOR_PHASE_LIST = "org.apache.myfaces.ActionForPhaseList";
+
+    public static final String SEQUENCE_PARAM = "jsf_sequence";
+
+    private static final String RENDER_KIT_IMPL = RendererUtils.class.getName() + ".RenderKitImpl";
+    
+    // This nice constant is "specified" 13.1.1.2 The Resource API Approach in Spec as an example
+    public static final String RES_NOT_FOUND = "RES_NOT_FOUND";
+
+    public static String getPathToComponent(UIComponent component)
+    {
+        StringBuffer buf = new StringBuffer();
+
+        if(component == null)
+        {
+            buf.append("{Component-Path : ");
+            buf.append("[null]}");
+            return buf.toString();
+        }
+
+        getPathToComponent(component,buf);
+
+        buf.insert(0,"{Component-Path : ");
+        buf.append("}");
+
+        return buf.toString();
+    }
+
+    private static void getPathToComponent(UIComponent component, StringBuffer buf)
+    {
+        if(component == null)
+            return;
+
+        StringBuffer intBuf = new StringBuffer();
+
+        intBuf.append("[Class: ");
+        intBuf.append(component.getClass().getName());
+        if(component instanceof UIViewRoot)
+        {
+            intBuf.append(",ViewId: ");
+            intBuf.append(((UIViewRoot) component).getViewId());
+        }
+        else
+        {
+            intBuf.append(",Id: ");
+            intBuf.append(component.getId());
+        }
+        intBuf.append("]");
+
+        buf.insert(0,intBuf.toString());
+
+        getPathToComponent(component.getParent(), buf);
+    }
+
+    public static String getConcatenatedId(FacesContext context, UIComponent container,
+                                           String clientId)
+    {
+        UIComponent child = container.findComponent(clientId);
+
+        if(child == null)
+                return clientId;
+
+        return getConcatenatedId(context, child);
+    }
+
+    public static String getConcatenatedId(FacesContext context, UIComponent component)
+    {
+        if (context == null) throw new NullPointerException("context");
+
+        StringBuffer idBuf = new StringBuffer();
+
+        idBuf.append(component.getId());
+
+        UIComponent parent;
+
+        while((parent = component.getParent())!=null)
+        {
+            if(parent instanceof NamingContainer)
+            {
+                idBuf.insert(0,UINamingContainer.getSeparatorChar(context));
+                idBuf.insert(0,parent.getId());
+            }
+        }
+
+        return idBuf.toString();
+    }
+
+    public static Boolean getBooleanValue(UIComponent component)
+    {
+        Object value = getObjectValue(component);
+        // Try to convert to Boolean if it is a String
+        if (value instanceof  String) {
+            value = Boolean.valueOf((String)value);
+        }
+        
+        if (value==null || value instanceof Boolean)
+        {
+            return (Boolean) value;
+        }
+
+        throw new IllegalArgumentException("Expected submitted value of type Boolean for Component : "+
+                    getPathToComponent(component));
+        
+    }
+
+    public static Date getDateValue(UIComponent component)
+    {
+        Object value = getObjectValue(component);
+        if (value==null || value instanceof Date)
+        {
+            return (Date) value;
+        }
+
+        throw new IllegalArgumentException("Expected submitted value of type Date for component : "
+                +getPathToComponent(component));
+    }
+
+    public static Object getObjectValue(UIComponent component)
+    {
+        if (!(component instanceof ValueHolder))
+        {
+            throw new IllegalArgumentException("Component : "+
+                    getPathToComponent(component)+"is not a ValueHolder");
+        }
+
+        if (component instanceof EditableValueHolder)
+        {
+            Object value = ((EditableValueHolder)component).getSubmittedValue();
+            if (value != null)
+            {
+                return value;
+            }
+        }
+
+        return ((ValueHolder)component).getValue();
+    }
+
+    @Deprecated
+    public static String getStringValue(FacesContext context, ValueBinding vb)
+    {
+        Object value = vb.getValue(context);
+        if (value != null)
+        {
+            return value.toString();
+        }
+        return null;
+    }
+
+    public static String getStringValue(FacesContext context, ValueExpression ve)
+    {
+        Object value = ve.getValue(context.getELContext());
+        if (value != null)
+        {
+            return value.toString();
+        }
+        return null;
+    }
+
+    public static String getStringValue(FacesContext facesContext,
+                                        UIComponent component)
+    {
+        try
+        {
+            if (!(component instanceof ValueHolder))
+            {
+                throw new IllegalArgumentException("Component : "+getPathToComponent(component)+"is not a ValueHolder");
+            }
+
+            if (component instanceof EditableValueHolder)
+            {
+                Object submittedValue = ((EditableValueHolder)component).getSubmittedValue();
+                if (submittedValue != null)
+                {
+                        if (log.isLoggable(Level.FINE)) log.fine("returning 1 '" + submittedValue + "'");
+                        return submittedValue.toString();
+                }
+            }
+
+            Object value;
+
+            if(component instanceof EditableValueHolder) {
+
+                EditableValueHolder holder = (EditableValueHolder) component;
+                
+                if(holder.isLocalValueSet()) {
+                    value = holder.getLocalValue();
+                } else {
+                    value = getValue(component);
+                }
+            }
+            else {
+                value = getValue(component);
+            }
+
+            Converter converter = ((ValueHolder)component).getConverter();
+            if (converter == null  && value != null)
+            {
+
+                try
+                {
+                    converter = facesContext.getApplication().createConverter(value.getClass());
+                    if (log.isLoggable(Level.FINE)) log.fine("the created converter is " + converter);
+                }
+                catch (FacesException e)
+                {
+                    log.log(Level.SEVERE, "No converter for class " + value.getClass().getName() + " found (component id=" + component.getId() + ").", e);
+                    // converter stays null
+                }
+            }
+
+            if (converter == null)
+            {
+                if (value == null)
+                {
+                    if (log.isLoggable(Level.FINE)) log.fine("returning an empty string");
+                    return "";
+                }
+
+                if (log.isLoggable(Level.FINE)) log.fine("returning an .toString");
+                return value.toString();
+                
+            }
+
+            if (log.isLoggable(Level.FINE)) log.fine("returning converter get as string " + converter);
+            return converter.getAsString(facesContext, component, value);
+            
+        }
+        catch(PropertyNotFoundException ex)
+        {
+            log.log(Level.SEVERE, "Property not found - called by component : "+getPathToComponent(component),ex);
+
+            throw ex;
+        }
+    }
+
+    private static Object getValue(UIComponent component) {
+        Object value;
+        try
+        {
+            value = ((ValueHolder) component).getValue();
+        }
+        catch(Exception ex)
+        {
+            throw new FacesException("Could not retrieve value of component with path : "+
+                    getPathToComponent(component),ex);
+        }
+        return value;
+    }
+
+    /**
+     * See JSF Spec. 8.5 Table 8-1
+     * @param value
+     * @return boolean
+     */
+    public static boolean isDefaultAttributeValue(Object value)
+    {
+        if (value == null)
+        {
+            return true;
+        }
+        else if (value instanceof Boolean)
+        {
+            return !((Boolean) value).booleanValue();
+        }
+        else if (value instanceof Number)
+        {
+            if (value instanceof Integer)
+            {
+                return ((Number)value).intValue() == Integer.MIN_VALUE;
+            }
+            else if (value instanceof Double)
+            {
+                return ((Number)value).doubleValue() == Double.MIN_VALUE;
+            }
+            else if (value instanceof Long)
+            {
+                return ((Number)value).longValue() == Long.MIN_VALUE;
+            }
+            else if (value instanceof Byte)
+            {
+                return ((Number)value).byteValue() == Byte.MIN_VALUE;
+            }
+            else if (value instanceof Float)
+            {
+                return ((Number)value).floatValue() == Float.MIN_VALUE;
+            }
+            else if (value instanceof Short)
+            {
+                return ((Number)value).shortValue() == Short.MIN_VALUE;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Find the proper Converter for the given UIOutput component.
+     * @return the Converter or null if no Converter specified or needed
+     * @throws FacesException if the Converter could not be created
+     */
+    public static Converter findUIOutputConverter(FacesContext facesContext,
+                                                  UIOutput component)
+            throws FacesException
+    {
+        return _SharedRendererUtils.findUIOutputConverter(facesContext, component);
+    }
+
+
+    /**
+     * Calls findUISelectManyConverter with considerValueType = false.
+     * @param facesContext
+     * @param component
+     * @return
+     */
+    public static Converter findUISelectManyConverter(FacesContext facesContext,
+                                                      UISelectMany component)
+    {
+        return findUISelectManyConverter(facesContext, component, false);
+    }
+    
+    /**
+     * Find proper Converter for the entries in the associated Collection or array of
+     * the given UISelectMany as specified in API Doc of UISelectMany.
+     * If considerValueType is true, the valueType attribute will be used
+     * in addition to the standard algorithm to get a valid converter.
+     * 
+     * @return the Converter or null if no Converter specified or needed
+     * @throws FacesException if the Converter could not be created
+     */
+    public static Converter findUISelectManyConverter(FacesContext facesContext,
+            UISelectMany component, boolean considerValueType) 
+    {
+        // If the component has an attached Converter, use it.
+        Converter converter = component.getConverter();
+        if (converter != null) return converter;
+        
+        if (considerValueType)
+        {
+            // try to get a converter from the valueType attribute
+            converter = _SharedRendererUtils.getValueTypeConverter(facesContext, component);
+            if (converter != null) return converter;
+        }
+
+        //Try to find out by value expression
+        ValueExpression ve = component.getValueExpression("value");
+        if (ve == null) return null;
+
+        // Try to get the type from the actual value or,
+        // if value == null, obtain the type from the ValueExpression
+        Class<?> valueType = null;
+        Object value = ve.getValue(facesContext.getELContext()); 
+        valueType = (value != null) 
+                        ? value.getClass() 
+                        : ve.getType(facesContext.getELContext());
+        
+        if (valueType == null) return null;
+        
+        // a valueType of Object is also permitted, in order to support
+        // managed bean properties of type Object that resolve to null at this point
+        if (Collection.class.isAssignableFrom(valueType) || Object.class.equals(valueType))
+        {
+            // try to get the by-type-converter from the type of the SelectItems
+            return _SharedRendererUtils.getSelectItemsValueConverter(new SelectItemsIterator(component, facesContext), facesContext);
+        }
+
+        if (!valueType.isArray())
+        {
+            throw new IllegalArgumentException("ValueExpression for UISelectMany : "
+                    + getPathToComponent(component) + " must be of type Collection or Array");
+        }
+
+        Class<?> arrayComponentType = valueType.getComponentType();
+        if (String.class.equals(arrayComponentType)) return null;    //No converter needed for String type
+        
+        if (Object.class.equals(arrayComponentType)) 
+        {    
+            // There is no converter for Object class
+            // try to get the by-type-converter from the type of the SelectItems
+            return _SharedRendererUtils.getSelectItemsValueConverter(new SelectItemsIterator(component, facesContext), facesContext);
+        }
+
+        try
+        {
+            return facesContext.getApplication().createConverter(arrayComponentType);
+        }
+        catch (FacesException e)
+        {
+            log.log(Level.SEVERE, "No Converter for type " + arrayComponentType.getName() + " found", e);
+            return null;
+        }
+    }
+    
+    public static void checkParamValidity(FacesContext facesContext, UIComponent uiComponent, Class compClass)
+    {
+        if(facesContext == null)
+            throw new NullPointerException("facesContext may not be null");
+        if(uiComponent == null)
+            throw new NullPointerException("uiComponent may not be null");
+
+        //if (compClass != null && !(compClass.isAssignableFrom(uiComponent.getClass())))
+        // why isAssignableFrom with additional getClass method call if isInstance does the same?
+        if (compClass != null && !(compClass.isInstance(uiComponent)))
+        {
+            throw new IllegalArgumentException("uiComponent : "+getPathToComponent(uiComponent)+
+                    " is not instance of "+compClass.getName()+" as it should be");
+        }
+    }
+
+
+    public static void renderChildren(FacesContext facesContext, UIComponent component)
+            throws IOException
+    {
+        int childCount = component.getChildCount();
+        if (childCount > 0)
+        {
+            for (int i = 0; i < childCount; i++)
+            {
+                UIComponent child = component.getChildren().get(i);
+                renderChild(facesContext, child);
+            }
+        }
+    }
+
+
+    public static void renderChild(FacesContext facesContext, UIComponent child)
+            throws IOException
+    {
+
+        child.encodeBegin(facesContext);
+        if (child.getRendersChildren())
+        {
+            child.encodeChildren(facesContext);
+        }
+        else
+        {
+            renderChildren(facesContext, child);
+        }
+        child.encodeEnd(facesContext);
+    }
+
+
+    public static List getSelectItemList(UISelectOne uiSelectOne)
+    {
+        return internalGetSelectItemList(uiSelectOne, FacesContext.getCurrentInstance());
+    }
+    
+    /**
+     * @param uiSelectOne
+     * @param facesContext
+     * @return List of SelectItem Objects
+     */
+    public static List getSelectItemList(UISelectOne uiSelectOne, FacesContext facesContext)
+    {
+        return internalGetSelectItemList(uiSelectOne, facesContext);
+    }
+    
+    public static List getSelectItemList(UISelectMany uiSelectMany)
+    {
+        return internalGetSelectItemList(uiSelectMany, FacesContext.getCurrentInstance());
+    }
+
+    /**
+     * @param uiSelectMany
+     * @param facesContext
+     * @return List of SelectItem Objects
+     */
+    public static List getSelectItemList(UISelectMany uiSelectMany, FacesContext facesContext)
+    {
+        return internalGetSelectItemList(uiSelectMany, facesContext);
+    }
+
+    private static List internalGetSelectItemList(UIComponent uiComponent, FacesContext facesContext)
+    {
+        /* TODO: Shall we cache the list in a component attribute?
+        ArrayList list = (ArrayList)uiComponent.getAttributes().get(SELECT_ITEM_LIST_ATTR);
+        if (list != null)
+        {
+            return list;
+        }
+         */
+        
+        List list = new ArrayList();
+        
+        for (Iterator iter = new SelectItemsIterator(uiComponent, facesContext); iter.hasNext();)
+        {
+            list.add(iter.next());            
+        }        
+        return list;
+    }
+
+
+    /**
+     * Convenient utility method that returns the currently submitted values of
+     * a UISelectMany component as a Set, of which the contains method can then be
+     * easily used to determine if a select item is currently selected.
+     * Calling the contains method of this Set with the renderable (String converted) item value
+     * as argument returns true if this item is selected.
+     * @param uiSelectMany
+     * @return Set containing all currently selected values
+     */
+    public static Set getSubmittedValuesAsSet(FacesContext context, UIComponent component, Converter converter, UISelectMany uiSelectMany)
+    {
+        Object submittedValues = uiSelectMany.getSubmittedValue();
+        if (submittedValues == null)
+        {
+            return null;
+        }
+
+        if(converter != null) {
+            converter = new PassThroughAsStringConverter(converter);
+        }
+
+        return internalSubmittedOrSelectedValuesAsSet(context, component, converter, uiSelectMany, submittedValues);
+    }
+
+
+    /**
+     * Convenient utility method that returns the currently selected values of
+     * a UISelectMany component as a Set, of which the contains method can then be
+     * easily used to determine if a value is currently selected.
+     * Calling the contains method of this Set with the item value
+     * as argument returns true if this item is selected.
+     * @param uiSelectMany
+     * @return Set containing all currently selected values
+     */
+    public static Set getSelectedValuesAsSet(FacesContext context, UIComponent component, Converter converter, UISelectMany uiSelectMany)
+    {
+        Object selectedValues = uiSelectMany.getValue();
+
+        return internalSubmittedOrSelectedValuesAsSet(context, component, converter, uiSelectMany, selectedValues);
+    }
+
+
+    /**
+     * Convenient utility method that returns the currently given value as String,
+     * using the given converter.
+     * Especially usefull for dealing with primitive types.
+     */
+    public static String getConvertedStringValue(FacesContext context,
+            UIComponent component, Converter converter, Object value) {
+        if (converter == null) {
+            if (value == null) {
+                return "";
+            } else if (value instanceof String) {
+                return (String) value;
+            } else {
+                return value.toString();
+            }
+        }
+
+        return converter.getAsString(context, component, value);
+    }
+
+
+    /**
+     * Convenient utility method that returns the currently given SelectItem value
+     * as String, using the given converter.
+     * Especially usefull for dealing with primitive types.
+     */
+    public static String getConvertedStringValue(FacesContext context,
+            UIComponent component, Converter converter, SelectItem selectItem) {
+        return getConvertedStringValue(context, component, converter, selectItem.getValue());
+    }
+
+
+    private static Set internalSubmittedOrSelectedValuesAsSet(FacesContext context,
+            UIComponent component, Converter converter, UISelectMany uiSelectMany,
+            Object values)
+    {
+        if (values == null || EMPTY_STRING.equals(values))
+        {
+            return Collections.EMPTY_SET;
+        }
+        else if (values instanceof Object[])
+        {
+            //Object array
+            Object[] ar = (Object[])values;
+            if (ar.length == 0)
+            {
+                return Collections.EMPTY_SET;
+            }
+
+            HashSet set = new HashSet(HashMapUtils.calcCapacity(ar.length));
+            for (int i = 0; i < ar.length; i++)
+            {
+                set.add( getConvertedStringValue(context, component, converter, ar[i]) );
+            }
+            return set;
+        }
+        else if (values.getClass().isArray())
+        {
+            //primitive array
+            int len = Array.getLength(values);
+            HashSet set = new HashSet(org.apache.myfaces.shared.util.HashMapUtils.calcCapacity(len));
+            for (int i = 0; i < len; i++)
+            {
+                set.add( getConvertedStringValue(context, component, converter, Array.get(values,i)) );
+            }
+            return set;
+        }
+        else if (values instanceof Collection)
+        {
+            Collection col = (Collection)values;
+            if (col.size() == 0)
+            {
+                return Collections.EMPTY_SET;
+            }
+
+            HashSet set = new HashSet(HashMapUtils.calcCapacity(col.size()));
+            for (Iterator i = col.iterator(); i.hasNext();)
+                set.add(getConvertedStringValue(context, component, converter, i.next()));
+
+            return set;
+
+        }
+        else
+        {
+            throw new IllegalArgumentException("Value of UISelectMany component with path : "
+                    + getPathToComponent(uiSelectMany) + " is not of type Array or List");
+        }
+    }
+
+    public static Object getConvertedUISelectOneValue(FacesContext facesContext, UISelectOne output, Object submittedValue){        
+        if (submittedValue != null && !(submittedValue instanceof String))
+        {
+            throw new IllegalArgumentException("Submitted value of type String for component : "
+                    + getPathToComponent(output) + "expected");
+        }
+        
+        //To be compatible with jsf ri, and according to issue 69
+        //[  Permit the passing of a null value to SelectItem.setValue()  ]
+        //If submittedValue == "" then convert to null.
+        if ((submittedValue != null) && (submittedValue instanceof String) && ("".equals(submittedValue)))
+        {
+            //Replace "" by null value
+            submittedValue = null;
+        }
+
+        Converter converter;
+        try
+        {
+            converter = findUIOutputConverter(facesContext, output);
+        }
+        catch (FacesException e)
+        {
+            throw new ConverterException(e);
+        }
+
+        return converter == null ? submittedValue : converter
+                .getAsObject(facesContext, output, (String) submittedValue);
+    }
+    
+    public static Object getConvertedUIOutputValue(FacesContext facesContext, UIOutput output, Object submittedValue)
+            throws ConverterException
+    {
+        if (submittedValue != null && !(submittedValue instanceof String))
+        {
+            submittedValue = submittedValue.toString();
+        }
+
+        Converter converter;
+        try
+        {
+            converter = findUIOutputConverter(facesContext, output);
+        }
+        catch (FacesException e)
+        {
+            throw new ConverterException(e);
+        }
+
+        return converter == null ? submittedValue : converter
+                .getAsObject(facesContext, output, (String) submittedValue);
+    }
+    
+    /**
+     * Invokes getConvertedUISelectManyValue() with considerValueType = false, thus
+     * implementing the standard behavior of the spec (valueType comes from Tomahawk).
+     * 
+     * @param facesContext
+     * @param selectMany
+     * @param submittedValue
+     * @return
+     * @throws ConverterException
+     */
+    public static Object getConvertedUISelectManyValue(FacesContext facesContext, 
+            UISelectMany selectMany, Object submittedValue) throws ConverterException
+    {
+        // do not consider the valueType attribute
+        return getConvertedUISelectManyValue(facesContext, selectMany, submittedValue, false);
+    }
+
+    /**
+     * Gets the converted value of a UISelectMany component.
+     * 
+     * @param facesContext
+     * @param selectMany
+     * @param submittedValue
+     * @param considerValueType if true, the valueType attribute of the component will
+     *                          also be used (applies for Tomahawk UISelectMany components)
+     * @return
+     * @throws ConverterException
+     */
+    public static Object getConvertedUISelectManyValue(FacesContext facesContext, 
+            UISelectMany selectMany, Object submittedValue,
+            boolean considerValueType) throws ConverterException
+    {
+        if (submittedValue == null)
+        {
+            return null;
+        }
+
+        if (!(submittedValue instanceof String[]))
+        {
+            throw new ConverterException("Submitted value of type String[] for component : "
+                    + getPathToComponent(selectMany) + "expected");
+        }
+
+        return _SharedRendererUtils.getConvertedUISelectManyValue(facesContext,
+                selectMany, (String[]) submittedValue, considerValueType);
+    }
+
+    public static boolean getBooleanAttribute(UIComponent component, String attrName, boolean defaultValue)
+    {
+        Boolean b = (Boolean) component.getAttributes().get(attrName);
+        return b != null ? b.booleanValue() : defaultValue;
+    }
+
+    public static int getIntegerAttribute(UIComponent component, String attrName, int defaultValue)
+    {
+        Integer i = (Integer) component.getAttributes().get(attrName);
+        return i != null ? i.intValue() : defaultValue;
+    }
+
+    private static final String TRINIDAD_FORM_COMPONENT_FAMILY = "org.apache.myfaces.trinidad.Form";
+    private static final String ADF_FORM_COMPONENT_FAMILY = "oracle.adf.Form";
+
+
+    /**
+     * Find the enclosing form of a component
+     * in the view-tree.
+     * All Subclasses of <code>UIForm</code> and all known
+     * form-families are searched for.
+     * Currently those are the Trinidad form family,
+     * and the (old) ADF Faces form family.
+     * <p/>
+     * There might be additional form families
+     * which have to be explicitly entered here.
+     *
+     * @param uiComponent
+     * @param facesContext
+     * @return FormInfo Information about the form - the form itself and its name.
+     */
+    public static FormInfo findNestingForm(UIComponent uiComponent, FacesContext facesContext)
+    {
+        UIComponent parent = uiComponent.getParent();
+        while (parent != null && (!ADF_FORM_COMPONENT_FAMILY.equals(parent.getFamily()) &&
+            !TRINIDAD_FORM_COMPONENT_FAMILY.equals(parent.getFamily()) &&
+            !(parent instanceof UIForm)))
+        {
+            parent = parent.getParent();
+        }
+
+        if (parent != null)
+        {
+            //link is nested inside a form
+            String formName = parent.getClientId(facesContext);
+            return new FormInfo(parent, formName);
+        }
+
+        return null;
+    }
+
+    public static boolean getBooleanValue(String attribute, Object value, boolean defaultValue) {
+        if (value instanceof Boolean) {
+            return ((Boolean) value).booleanValue();
+        }
+        else if (value instanceof String) {
+            return Boolean.valueOf((String) value).booleanValue();
+        }
+        else if (value != null) {
+            log.severe("value for attribute " + attribute +
+                " must be instanceof 'Boolean' or 'String', is of type : " + value.getClass());
+
+            return defaultValue;
+        }
+
+        return defaultValue;
+    }
+
+    public static void copyHtmlInputTextAttributes(HtmlInputText src, HtmlInputText dest)
+    {
+        dest.setId(src.getId());
+        boolean forceId = getBooleanValue(
+            JSFAttr.FORCE_ID_ATTR,
+            src.getAttributes().get(JSFAttr.FORCE_ID_ATTR),
+            false);
+        if (forceId) {
+            dest.getAttributes().put(JSFAttr.FORCE_ID_ATTR, Boolean.TRUE);
+        }
+        dest.setImmediate(src.isImmediate());
+        dest.setTransient(src.isTransient());
+        dest.setAccesskey(src.getAccesskey());
+        dest.setAlt(src.getAlt());
+        dest.setConverter(src.getConverter());
+        dest.setDir(src.getDir());
+        dest.setDisabled(src.isDisabled());
+        dest.setLang(src.getLang());
+        dest.setLocalValueSet(src.isLocalValueSet());
+        dest.setMaxlength(src.getMaxlength());
+        dest.setOnblur(src.getOnblur());
+        dest.setOnchange(src.getOnchange());
+        dest.setOnclick(src.getOnclick());
+        dest.setOndblclick(src.getOndblclick());
+        dest.setOnfocus(src.getOnfocus());
+        dest.setOnkeydown(src.getOnkeydown());
+        dest.setOnkeypress(src.getOnkeypress());
+        dest.setOnkeyup(src.getOnkeyup());
+        dest.setOnmousedown(src.getOnmousedown());
+        dest.setOnmousemove(src.getOnmousemove());
+        dest.setOnmouseout(src.getOnmouseout());
+        dest.setOnmouseover(src.getOnmouseover());
+        dest.setOnmouseup(src.getOnmouseup());
+        dest.setOnselect(src.getOnselect());
+        dest.setReadonly(src.isReadonly());
+        dest.setRendered(src.isRendered());
+        dest.setRequired(src.isRequired());
+        dest.setSize(src.getSize());
+        dest.setStyle(src.getStyle());
+        dest.setStyleClass(src.getStyleClass());
+        dest.setTabindex(src.getTabindex());
+        dest.setTitle(src.getTitle());
+        dest.setValidator(src.getValidator());
+    }
+
+    public static Integer getViewSequence(FacesContext facescontext)
+    {
+        Map map = facescontext.getExternalContext().getRequestMap();
+        Integer sequence = (Integer) map.get(SEQUENCE_PARAM);
+        if (sequence == null)
+        {
+            sequence = new Integer(1);
+            map.put(SEQUENCE_PARAM, sequence);
+
+            synchronized (facescontext.getExternalContext().getSession(true))
+            {
+                facescontext.getExternalContext().getSessionMap().put(RendererUtils.SEQUENCE_PARAM, sequence);
+            }
+        }
+        return sequence;
+    }
+
+    public static UIComponent findComponent(UIComponent headerComp, Class clazz)
+    {
+        if (clazz.isAssignableFrom(headerComp.getClass()))
+        {
+            return headerComp;
+        }
+
+        List li = headerComp.getChildren();
+
+        for (int i = 0; i < li.size(); i++)
+        {
+            UIComponent comp = (UIComponent) li.get(i);
+
+            //recursively iterate through children to find the component
+            UIComponent lookupComp = findComponent(comp, clazz);
+
+            if (lookupComp != null)
+                return lookupComp;
+        }
+
+        return null;
+    }
+
+    public static void addOrReplaceChild(UIInput component, UIComponent child)
+    {
+        List li = component.getChildren();
+
+        for (int i = 0; i < li.size(); i++)
+        {
+            UIComponent oldChild = (UIComponent) li.get(i);
+
+            if (oldChild.getId() != null && oldChild.getId().equals(child.getId()))
+            {
+                li.set(i, child);
+                return;
+            }
+        }
+
+        component.getChildren().add(child);
+    }
+
+    public static String getClientId(FacesContext facesContext, UIComponent uiComponent, String forAttr)
+    {
+        UIComponent forComponent = uiComponent.findComponent(forAttr);
+        if (forComponent == null)
+        {
+            final char separatorChar = UINamingContainer.getSeparatorChar(facesContext);
+            if (log.isLoggable(Level.INFO))
+            {
+                log
+                        .info("Unable to find component '"
+                                + forAttr
+                                + "' (calling findComponent on component '"
+                                + uiComponent.getClientId(facesContext)
+                                + "')."
+                                + " We'll try to return a guessed client-id anyways -"
+                                + " this will be a problem if you put the referenced component"
+                                + " into a different naming-container. If this is the case, you can always use the full client-id.");
+            }
+            if (forAttr.length() > 0 && forAttr.charAt(0) == separatorChar)
+            {
+                //absolute id path
+                return forAttr.substring(1);
+            }
+
+            //relative id path, we assume a component on the same level as the label component
+            String labelClientId = uiComponent.getClientId(facesContext);
+            int colon = labelClientId.lastIndexOf(separatorChar);
+
+            return colon == -1 ? forAttr : labelClientId.substring(0, colon + 1) + forAttr;
+
+        }
+
+        return forComponent.getClientId(facesContext);
+
+    }
+
+    public static List convertIdsToClientIds(String actionFor, FacesContext facesContext, UIComponent component)
+    {
+        List li = new ArrayList();
+
+        String[] ids = actionFor.split(",");
+
+        for (int i = 0; i < ids.length; i++)
+        {
+            String trimedId = ids[i].trim();
+            if (trimedId.equals("none"))
+                li.add(trimedId);
+            else
+                li.add(RendererUtils.getClientId(facesContext, component, trimedId));
+        }
+        return li;
+    }
+
+    public static List convertPhasesToPhasesIds(String actionForPhase)
+    {
+        List li = new ArrayList();
+
+        if (actionForPhase == null)
+        {
+            return li;
+        }
+
+        String[] ids = actionForPhase.split(",");
+
+        for (int i = 0; i < ids.length; i++)
+        {
+            if (ids[i].equals("PROCESS_VALIDATIONS"))
+            {
+                li.add(PhaseId.PROCESS_VALIDATIONS);
+            }
+            else if (ids[i].equals("UPDATE_MODEL_VALUES"))
+            {
+                li.add(PhaseId.UPDATE_MODEL_VALUES);
+            }
+        }
+        return li;
+    }
+
+    /**
+     * Helper method which loads a resource file (such as css) by a given context path and a file name.
+     * Useful to provide css files (or js files) inline.
+     * 
+     * @param ctx <code>FacesContext</code> object to calculate the context path of the web application.
+     * @param file name of the resource file (e.g. <code>foo.css</code>).
+     * @return the content of the resource file, or <code>null</code> if no such file is available.
+     */
+    public static String loadResourceFile(FacesContext ctx, String file)
+    {
+
+        ByteArrayOutputStream content = new ByteArrayOutputStream(10240);
+
+        InputStream in = null;
+        try {
+            in = ctx.getExternalContext().getResourceAsStream(file);
+            if (in == null)
+            {
+                return null;
+            }
+
+            byte[] fileBuffer = new byte[10240];
+            int read;
+            while ((read = in.read(fileBuffer)) > -1)
+            {
+                content.write(fileBuffer, 0, read);
+            }
+        }
+        catch (FileNotFoundException e) {
+            if (log.isLoggable(Level.WARNING))
+                log.log(Level.WARNING, "no such file " + file, e);
+            content = null;
+        }
+        catch (IOException e) {
+            if (log.isLoggable(Level.WARNING))
+                log.log(Level.WARNING, "problems during processing resource " + file, e);
+            content = null;
+        }
+        finally
+        {
+            try
+            {
+                if (content != null)
+                {
+                    content.close();
+                }
+            }
+            catch (IOException e)
+            {
+                log.log(Level.WARNING, e.getLocalizedMessage(), e);
+            }
+            if (in != null)
+            {
+                try
+                {
+                    in.close();
+                }
+                catch (IOException e)
+                {
+                    log.log(Level.WARNING, e.getLocalizedMessage(), e);
+                }
+            }
+        }
+
+        return content.toString();
+    }
+
+    /**
+     * check for partial validation or model update attributes being set
+     * and initialize the request-map accordingly.
+     * SubForms will work with this information.
+     */
+    public static void initPartialValidationAndModelUpdate(UIComponent component, FacesContext facesContext)
+    {
+        String actionFor = (String) component.getAttributes().get("actionFor");
+
+        if (actionFor != null)
+        {
+            List li = convertIdsToClientIds(actionFor, facesContext, component);
+
+            facesContext.getExternalContext().getRequestMap().put(ACTION_FOR_LIST, li);
+
+            String actionForPhase = (String) component.getAttributes().get("actionForPhase");
+
+            if (actionForPhase != null)
+            {
+                List phaseList = convertPhasesToPhasesIds(actionForPhase);
+
+                facesContext.getExternalContext().getRequestMap().put(ACTION_FOR_PHASE_LIST, phaseList);
+            }
+        }
+    }
+
+    public static boolean isAdfOrTrinidadForm(UIComponent component) {
+        if (component == null)
+            return false;
+        return ADF_FORM_COMPONENT_FAMILY.equals(component.getFamily()) ||
+            TRINIDAD_FORM_COMPONENT_FAMILY.equals(component.getFamily());
+    }
+
+
+    /**
+     * Gets the ResponseStateManager for the renderKit Id provided
+     * 
+     * @deprecated use FacesContext.getRenderKit() or getRenderKitFactory().getRenderKit(context, renderKitId).getResponseStateManager()
+     */
+    @Deprecated
+    public static ResponseStateManager getResponseStateManager(FacesContext facesContext, String renderKitId)
+            throws FacesException
+    {
+        RenderKit renderKit = facesContext.getRenderKit();
+
+        if (renderKit == null)
+        {
+            // look for the renderkit in the request
+            Map attributesMap = facesContext.getAttributes();
+            RenderKitFactory factory = (RenderKitFactory) attributesMap.get(RENDER_KIT_IMPL);
+
+            if (factory != null)
+            {
+                renderKit = factory.getRenderKit(facesContext, renderKitId);
+            }
+            else
+            {
+                factory = (RenderKitFactory) FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
+
+                if (factory == null)
+                {
+                    throw new IllegalStateException("Factory is null");
+                }
+
+                attributesMap.put(RENDER_KIT_IMPL, factory);
+
+                renderKit = factory.getRenderKit(facesContext, renderKitId);
+            }
+        }
+
+        if (renderKit == null)
+        {
+            throw new IllegalArgumentException("Could not find a RenderKit for \"" + renderKitId + "\""); 
+        }
+
+        return renderKit.getResponseStateManager();
+    }
+    
+    /**
+      * Checks for name/library attributes on component and if they are avaliable,
+      * creates {@link Resource} and returns it's path suitable for rendering.
+      * If component doesn't have name/library gets value for attribute named <code>attributeName</code> 
+      * returns it processed with {@link CoreRenderer#toResourceUri(FacesContext, Object)}
+      *       
+      * @param facesContext a {@link FacesContext}
+      * @param component a {@link UIComponent}
+      * @param attributeName name of attribute that represents "image", "icon", "source", ... 
+      * 
+      * @since 4.0.1
+      */
+    public static String getIconSrc(final FacesContext facesContext, final UIComponent component, final String attributeName)
+    {
+
+        // JSF 2.0: if "name" attribute is available, treat as a resource reference.
+        final Map<String, Object> attributes = component.getAttributes();
+        final String resourceName = (String) attributes.get(JSFAttr.NAME_ATTR);
+        if (resourceName != null && (resourceName.length() > 0))
+        {
+
+            final ResourceHandler resourceHandler = facesContext.getApplication().getResourceHandler();
+            final Resource resource;
+            
+            final String libraryName = (String) component.getAttributes().get(JSFAttr.LIBRARY_ATTR);
+            if ((libraryName != null) && (libraryName.length() > 0))
+            {
+                resource = resourceHandler.createResource(resourceName, libraryName);
+            }
+            else
+            {
+                resource = resourceHandler.createResource(resourceName);    
+            }
+            
+            if (resource == null)
+            {
+                // If resourceName/libraryName are set but no resource created -> probably a typo,
+                // show a message
+                if (facesContext.isProjectStage(ProjectStage.Development))
+                {
+                    String summary = "Unable to find resource: " + resourceName;
+                    if (libraryName != null) 
+                    {
+                        summary = summary + " from library: " + libraryName;
+                    }
+                    facesContext.addMessage(component.getClientId(facesContext), 
+                            new FacesMessage(FacesMessage.SEVERITY_WARN, summary, summary));
+                }
+                
+                return RES_NOT_FOUND;
+            }
+            else
+            {
+                return resource.getRequestPath();
+            }
+        }
+        else
+        {
+            String value = (String) component.getAttributes().get(attributeName);
+            return toResourceUri(facesContext, value);
+        }
+    }
+    
+    /**
+     * Coerces an object into a resource URI, calling the view-handler.
+     */
+    static public String toResourceUri(FacesContext facesContext, Object o)
+    {
+      if (o == null)
+        return null;
+
+      String uri = o.toString();
+
+      // *** EL Coercion problem ***
+      // If icon or image attribute was declared with #{resource[]} and that expression
+      // evaluates to null (it means ResourceHandler.createResource returns null because requested resource does not exist)
+      // EL implementation turns null into ""
+      // see http://www.irian.at/blog/blogid/unifiedElCoercion/#unifiedElCoercion
+      if (uri.length() == 0)
+      {
+        return null;
+      }
+
+
+      // With JSF 2.0 url for resources can be done with EL like #{resource['resourcename']}
+      // and such EL after evalution contains context path for the current web application already,
+      // -> we dont want call viewHandler.getResourceURL()
+      if (uri.contains(ResourceHandler.RESOURCE_IDENTIFIER))
+      {
+        return uri;
+      }
+
+      // Treat two slashes as server-relative
+      if (uri.startsWith("//"))
+      {
+        return uri.substring(1);
+      }
+      else
+      {
+        // If the specified path starts with a "/",
+        // following method will prefix it with the context path for the current web application,
+        // and return the result
+        String resourceURL = facesContext.getApplication().getViewHandler().getResourceURL(facesContext, uri);
+        return facesContext.getExternalContext().encodeResourceURL(resourceURL);
+      }
+    }
+
+
+    /**
+     * Special converter for handling submitted values which don't need to be converted.
+     *
+     * @author mathias (latest modification by $Author$)
+     * @version $Revision$ $Date$
+     */
+    private static class PassThroughAsStringConverter implements Converter
+    {
+        private final Converter converter;
+
+        public PassThroughAsStringConverter(Converter converter)
+        {
+            this.converter = converter;
+        }
+
+        public Object getAsObject(FacesContext context, UIComponent component,
+                String value) throws ConverterException
+        {
+            return converter.getAsObject(context, component, value);
+        }
+
+        public String getAsString(FacesContext context, UIComponent component,
+                Object value) throws ConverterException
+        {
+            return (String)value;
+        }
+
+    }
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java
new file mode 100755
index 0000000..01aae7e
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java
@@ -0,0 +1,494 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit;
+
+import java.lang.reflect.Array;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Set;
+import java.util.SortedSet;
+import java.util.TreeSet;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.el.ValueExpression;
+import javax.faces.FacesException;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UISelectMany;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.model.SelectItem;
+import javax.faces.model.SelectItemGroup;
+
+import org.apache.myfaces.shared.util.SelectItemsIterator;
+
+/**
+ * The util methods in this class are shared between the javax.faces.component package and
+ * the org.apache.myfaces.renderkit package.
+ * Please note: Any changes here must also apply to the class in the other package!
+ *
+ * @author Manfred Geiler (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+class _SharedRendererUtils
+{
+    static final String COLLECTION_TYPE_KEY = "collectionType";
+    static final String VALUE_TYPE_KEY = "valueType";
+
+    static Converter findUIOutputConverter(FacesContext facesContext,
+            UIOutput component)
+    {
+        // Attention!
+        // This code is duplicated in jsfapi component package.
+        // If you change something here please do the same in the other class!
+
+        Converter converter = component.getConverter();
+        if (converter != null)
+            return converter;
+
+        //Try to find out by value expression
+        ValueExpression expression = component.getValueExpression("value");
+        if (expression == null)
+            return null;
+
+        Class valueType = expression.getType(facesContext.getELContext());
+        if (valueType == null)
+            return null;
+
+        if (Object.class.equals(valueType))
+            return null; //There is no converter for Object class
+
+        try
+        {
+            return facesContext.getApplication().createConverter(valueType);
+        }
+        catch (FacesException e)
+        {
+            log(facesContext, "No Converter for type " + valueType.getName()
+                    + " found", e);
+            return null;
+        }
+    }
+
+    /**
+     * Gets the converted value of a UISelectMany component.
+     * If the considerValueType is true, this method will also consider the
+     * valueType attribute of Tomahawk UISelectMany components.
+     * 
+     * @param facesContext
+     * @param component
+     * @param submittedValue
+     * @param considerValueType
+     * @return
+     * @throws ConverterException
+     */
+    static Object getConvertedUISelectManyValue(FacesContext facesContext, UISelectMany component,  
+            String[] submittedValue, boolean considerValueType) throws ConverterException
+    {
+        // Attention!
+        // This code is duplicated in jsfapi component package (except for considerValueType).
+        // If you change something here please do the same in the other class!
+
+        if (submittedValue == null)
+        {
+            throw new NullPointerException("submittedValue");
+        }
+
+        ValueExpression expression = component.getValueExpression("value");
+        Object targetForConvertedValues = null;
+        
+        // if the component has an attached converter, use it
+        Converter converter = component.getConverter();
+        if (converter == null && considerValueType)
+        {
+            // try to get a converter from the valueType attribute
+            converter = getValueTypeConverter(facesContext, component);
+        }
+        
+        if (expression != null)
+        {
+            Class<?> modelType = expression
+                    .getType(facesContext.getELContext());
+            if (modelType == null)
+            {
+                // FIXME temporal workaround for MYFACES-2552
+                return submittedValue;
+            }
+            else if (modelType.isArray())
+            {
+                // the target should be an array
+                Class<?> componentType = modelType.getComponentType();
+                // check for optimization if the target is
+                // a string array --> no conversion needed
+                if (String.class.equals(componentType))
+                {
+                    return submittedValue;
+                }
+                if (converter == null)
+                {
+                    // the compononent does not have an attached converter
+                    // --> try to get a registered-by-class converter
+                    converter = facesContext.getApplication().createConverter(
+                            componentType);
+
+                    if (converter == null)
+                    {
+                        // could not obtain a Converter
+                        // --> check if we maybe do not really have to convert
+                        if (!Object.class.equals(componentType))
+                        {
+                            // target is not an Object array
+                            // and not a String array (checked some lines above)
+                            // and we do not have a Converter
+                            throw new ConverterException(
+                                    "Could not obtain a Converter for "
+                                            + componentType.getName());
+                        }
+                    }
+                }
+                // instantiate the array
+                targetForConvertedValues = Array.newInstance(componentType,
+                        submittedValue.length);
+            }
+            else if (Collection.class.isAssignableFrom(modelType) || Object.class.equals(modelType))
+            {
+                if (converter == null)
+                {
+                    // try to get the by-type-converter from the type of the SelectItems
+                    SelectItemsIterator iterator = new SelectItemsIterator(component, facesContext);
+                    converter = getSelectItemsValueConverter(iterator, facesContext);
+                }
+                
+                if (Collection.class.isAssignableFrom(modelType))
+                {
+                    // the target should be a Collection
+                    Object collectionTypeAttr = component.getAttributes().get(
+                            COLLECTION_TYPE_KEY);
+                    if (collectionTypeAttr != null)
+                    {
+                        Class<?> collectionType = getClassFromAttribute(facesContext, collectionTypeAttr);
+                        if (collectionType == null)
+                        {
+                            throw new FacesException(
+                                    "The attribute "
+                                            + COLLECTION_TYPE_KEY
+                                            + " of component "
+                                            + component.getClientId()
+                                            + " does not evaluate to a "
+                                            + "String, a Class object or a ValueExpression pointing "
+                                            + "to a String or a Class object.");
+                        }
+                        // now we have a collectionType --> but is it really some kind of Collection
+                        if (!Collection.class.isAssignableFrom(collectionType))
+                        {
+                            throw new FacesException("The attribute "
+                                    + COLLECTION_TYPE_KEY + " of component "
+                                    + component.getClientId()
+                                    + " does not point to a valid type of Collection.");
+                        }
+                        // now we have a real collectionType --> try to instantiate it
+                        try
+                        {
+                            targetForConvertedValues = collectionType.newInstance();
+                        }
+                        catch (Exception e)
+                        {
+                            throw new FacesException("The Collection "
+                                    + collectionType.getName()
+                                    + "can not be instantiated.", e);
+                        }
+                    }
+                    else
+                    {
+                        // component.getValue() will implement Collection at this point
+                        Collection<?> componentValue = (Collection<?>) component
+                                .getValue();
+                        // can we clone the Collection
+                        if (componentValue instanceof Cloneable)
+                        {
+                            // clone method of Object is protected --> use reflection
+                            try
+                            {
+                                Method cloneMethod = componentValue.getClass()
+                                        .getMethod("clone");
+                                Collection<?> clone = (Collection<?>) cloneMethod
+                                        .invoke(componentValue);
+                                clone.clear();
+                                targetForConvertedValues = clone;
+                            }
+                            catch (Exception e)
+                            {
+                                log(facesContext, "Could not clone "
+                                        + componentValue.getClass().getName(), e);
+                            }
+                        }
+    
+                        // if clone did not work
+                        if (targetForConvertedValues == null)
+                        {
+                            // try to create the (concrete) collection from modelType 
+                            // or with the class object of componentValue (if any)
+                            try
+                            {
+                                targetForConvertedValues = (componentValue != null 
+                                        ? componentValue.getClass()
+                                        : modelType).newInstance();
+                            }
+                            catch (Exception e)
+                            {
+                                // this did not work either
+                                // use the standard concrete type
+                                if (SortedSet.class.isAssignableFrom(modelType))
+                                {
+                                    targetForConvertedValues = new TreeSet();
+                                }
+                                else if (Queue.class.isAssignableFrom(modelType))
+                                {
+                                    targetForConvertedValues = new LinkedList();
+                                }
+                                else if (Set.class.isAssignableFrom(modelType))
+                                {
+                                    targetForConvertedValues = new HashSet(
+                                            submittedValue.length);
+                                }
+                                else
+                                {
+                                    targetForConvertedValues = new ArrayList(
+                                            submittedValue.length);
+                                }
+                            }
+                        }
+                    }
+                }
+                else /* if (Object.class.equals(modelType)) */
+                {
+                    // a modelType of Object is also permitted, in order to support
+                    // managed bean properties of type Object
+                    
+                    // optimization: if we don't have a converter, we can return the submittedValue
+                    if (converter == null)
+                    {
+                        return submittedValue;
+                    }
+                    
+                    targetForConvertedValues = new Object[submittedValue.length];
+                }
+            }
+            else
+            {
+                // the expression does neither point to an array nor to a collection
+                throw new ConverterException(
+                        "ValueExpression for UISelectMany must be of type Collection or Array.");
+            }
+        }
+        else
+        {
+            targetForConvertedValues = new Object[submittedValue.length];
+        }
+
+        // convert the values with the selected converter (if any)
+        // and store them in targetForConvertedValues
+        boolean isArray = (targetForConvertedValues.getClass().isArray());
+        for (int i = 0; i < submittedValue.length; i++)
+        {
+            // get the value
+            Object value;
+            if (converter != null)
+            {
+                value = converter.getAsObject(facesContext, component,
+                        submittedValue[i]);
+            }
+            else
+            {
+                value = submittedValue[i];
+            }
+            // store it in targetForConvertedValues
+            if (isArray)
+            {
+                Array.set(targetForConvertedValues, i, value);
+            }
+            else
+            {
+                ((Collection) targetForConvertedValues).add(value);
+            }
+        }
+
+        return targetForConvertedValues;
+    }
+    
+    /**
+     * Gets a Class object from a given component attribute. The attribute can
+     * be a ValueExpression (that evaluates to a String or a Class) or a 
+     * String (that is a fully qualified Java class name) or a Class object.
+     * 
+     * @param facesContext
+     * @param attribute
+     * @return
+     * @throws FacesException if the value is a String and the represented
+     *                        class cannot be found
+     */
+    static Class<?> getClassFromAttribute(FacesContext facesContext,
+            Object attribute) throws FacesException
+    {
+        // Attention!
+        // This code is duplicated in jsfapi component package.
+        // If you change something here please do the same in the other class!
+        
+        Class<?> type = null;
+        
+        // if there is a value, it must be a ...
+        // ... a ValueExpression that evaluates to a String or a Class
+        if (attribute instanceof ValueExpression)
+        {
+            // get the value of the ValueExpression
+            attribute = ((ValueExpression) attribute)
+                    .getValue(facesContext.getELContext());
+        }
+        // ... String that is a fully qualified Java class name
+        if (attribute instanceof String)
+        {
+            try
+            {
+                type = Class.forName((String) attribute);
+            }
+            catch (ClassNotFoundException cnfe)
+            {
+                throw new FacesException(
+                        "Unable to find class "
+                                + attribute
+                                + " on the classpath.", cnfe);
+            }
+
+        }
+        // ... a Class object
+        else if (attribute instanceof Class)
+        {
+            type = (Class<?>) attribute;
+        }
+        
+        return type;
+    }
+    
+    /**
+     * Uses the valueType attribute of the given UISelectMany component to
+     * get a by-type converter.
+     * 
+     * @param facesContext
+     * @param component
+     * @return
+     */
+    static Converter getValueTypeConverter(FacesContext facesContext, UISelectMany component)
+    {
+        Converter converter = null;
+        
+        Object valueTypeAttr = component.getAttributes().get(VALUE_TYPE_KEY);
+        if (valueTypeAttr != null)
+        {
+            // treat the valueType attribute exactly like the collectionType attribute
+            Class<?> valueType = getClassFromAttribute(facesContext, valueTypeAttr);
+            if (valueType == null)
+            {
+                throw new FacesException(
+                        "The attribute "
+                                + VALUE_TYPE_KEY
+                                + " of component "
+                                + component.getClientId()
+                                + " does not evaluate to a "
+                                + "String, a Class object or a ValueExpression pointing "
+                                + "to a String or a Class object.");
+            }
+            // now we have a valid valueType
+            // --> try to get a registered-by-class converter
+            converter = facesContext.getApplication().createConverter(valueType);
+            
+            if (converter == null)
+            {
+                log.log(Level.WARNING, "Found attribute valueType on component " +
+                        RendererUtils.getPathToComponent(component) +
+                        ", but could not get a by-type converter for type " + 
+                        valueType.getName());
+            }
+        }
+        
+        return converter;
+    }
+    
+    /**
+     * Iterates through the SelectItems with the given Iterator and tries to obtain
+     * a by-class-converter based on the Class of SelectItem.getValue().
+     * @param iterator
+     * @param facesContext
+     * @return The first suitable Converter for the given SelectItems or null.
+     */
+    static Converter getSelectItemsValueConverter(Iterator<SelectItem> iterator, FacesContext facesContext)
+    {
+        // Attention!
+        // This code is duplicated in jsfapi component package.
+        // If you change something here please do the same in the other class!
+        
+        Converter converter = null;
+        while (converter == null && iterator.hasNext())
+        {
+            SelectItem item = iterator.next();
+            if (item instanceof SelectItemGroup)
+            {
+                Iterator<SelectItem> groupIterator = Arrays.asList(((SelectItemGroup) item).getSelectItems()).iterator();
+                converter = getSelectItemsValueConverter(groupIterator, facesContext);
+            }
+            else
+            {
+                Class<?> selectItemsType = item.getValue().getClass();
+                
+                // optimization: no conversion for String values
+                if (String.class.equals(selectItemsType))
+                {
+                    return null;
+                }
+                
+                try
+                {
+                    converter = facesContext.getApplication().createConverter(selectItemsType);
+                }
+                catch (FacesException e)
+                {
+                    // nothing - try again
+                }
+            }
+        }
+        return converter;
+    }
+
+    //private static final Log log = LogFactory.getLog(_SharedRendererUtils.class);
+    private static final Logger log = Logger.getLogger(_SharedRendererUtils.class.getName());
+
+    /**
+     * This method is different in the two versions of _SharedRendererUtils.
+     */
+    private static void log(FacesContext context, String msg, Exception e)
+    {
+        log.log(Level.SEVERE, msg, e);
+    }
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java
new file mode 100644
index 0000000..4919e8e
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java
@@ -0,0 +1,618 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit.html;
+
+import org.apache.myfaces.shared.util.ArrayUtils;
+
+
+/**
+ * Constant declarations for HTML rendering.
+ * @author Manfred Geiler
+ * @author Anton Koinov
+ * @version $Revision$ $Date$
+ */
+public interface HTML
+{
+    // Deprecated attributes
+    @Deprecated String DATAFLD_ATTR = "datafld";
+    @Deprecated String DATASRC_ATTR = "datasrc";
+    @Deprecated String DATAFORMATAS_ATTR = "dataformatas";
+
+    // Common attributes
+    String ALIGN_ATTR = "align";
+    String BORDER_ATTR = "border";
+    String WIDTH_ATTR = "width";
+    String READONLY_ATTR = "readonly";
+    String FILE_ATTR = "file";
+    String ACCEPT_ATTR = "accept";
+
+    // Common event handler attributes
+    String ONCLICK_ATTR     = "onclick";
+    String ONDBLCLICK_ATTR  = "ondblclick";
+    String ONMOUSEDOWN_ATTR = "onmousedown";
+    String ONMOUSEUP_ATTR   = "onmouseup";
+    String ONMOUSEOVER_ATTR = "onmouseover";
+    String ONMOUSEMOVE_ATTR = "onmousemove";
+    String ONMOUSEOUT_ATTR  = "onmouseout";
+    String ONKEYPRESS_ATTR  = "onkeypress";
+    String ONKEYDOWN_ATTR   = "onkeydown";
+    String ONKEYUP_ATTR     = "onkeyup";
+    String ONFOCUS_ATTR = "onfocus";
+    String ONBLUR_ATTR = "onblur";
+    String[] EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONCLICK =
+    {
+        ONDBLCLICK_ATTR,
+        ONMOUSEDOWN_ATTR,
+        ONMOUSEUP_ATTR,
+        ONMOUSEOVER_ATTR,
+        ONMOUSEMOVE_ATTR,
+        ONMOUSEOUT_ATTR,
+        ONKEYPRESS_ATTR,
+        ONKEYDOWN_ATTR,
+        ONKEYUP_ATTR
+    };
+    String[] EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONMOUSEOVER_AND_ONMOUSEOUT =
+    {
+        ONDBLCLICK_ATTR,
+        ONMOUSEDOWN_ATTR,
+        ONMOUSEUP_ATTR,
+        ONMOUSEMOVE_ATTR,
+        ONKEYPRESS_ATTR,
+        ONKEYDOWN_ATTR,
+        ONKEYUP_ATTR,
+        ONCLICK_ATTR
+    };
+    String[] EVENT_HANDLER_ATTRIBUTES =
+            (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+                EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONCLICK,
+                new String[] {ONCLICK_ATTR});
+
+    // Input field event handler attributes
+    String ONSELECT_ATTR = "onselect";
+    String ONCHANGE_ATTR = "onchange";
+    String[] COMMON_FIELD_EVENT_ATTRIBUTES =
+    {
+        ONFOCUS_ATTR,
+        ONBLUR_ATTR,
+        ONSELECT_ATTR,
+        ONCHANGE_ATTR
+    };
+
+    String[] COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONFOCUS =
+    {
+        ONBLUR_ATTR,
+        ONSELECT_ATTR,
+        ONCHANGE_ATTR
+    };
+    
+    String[] COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONSELECT_AND_ONCHANGE =
+    {
+        ONFOCUS_ATTR,
+        ONBLUR_ATTR
+    };
+
+    // universal attributes
+    String DIR_ATTR   = "dir";
+    String LANG_ATTR  = "lang";
+    String STYLE_ATTR = "style";
+    String TITLE_ATTR = "title";
+    String STYLE_CLASS_ATTR = "styleClass"; //"class" cannot be used as property name
+     
+    String[] UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE =
+    {
+        DIR_ATTR,
+        LANG_ATTR,
+        TITLE_ATTR,
+
+        //NOTE: if changed, please verify universal attributes in HtmlMessageRenderer !
+    };
+    String[] UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE_AND_TITLE =
+    {
+        DIR_ATTR,
+        LANG_ATTR,
+    };
+    String[] UNIVERSAL_ATTRIBUTES =
+            (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+                UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE,
+                new String[] {STYLE_ATTR, STYLE_CLASS_ATTR});
+
+    //universal, but not the same property-name -
+    //styleClass attribute is rendered as such
+    String CLASS_ATTR = "class";
+
+    // common form field attributes
+    String ACCESSKEY_ATTR   = "accesskey";
+    String TABINDEX_ATTR    = "tabindex";
+    String DISABLED_ATTR = "disabled";
+    String[] COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED =
+    {
+        ACCESSKEY_ATTR,
+        TABINDEX_ATTR
+    };
+    String[] COMMON_FIELD_ATTRIBUTES =
+        (String[]) ArrayUtils.concat(
+            COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
+            new String[] {DISABLED_ATTR});
+
+    // Common Attributes
+    String[] COMMON_PASSTROUGH_ATTRIBUTES =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            EVENT_HANDLER_ATTRIBUTES,
+            UNIVERSAL_ATTRIBUTES);
+    String[] COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_STYLE =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            EVENT_HANDLER_ATTRIBUTES,
+            UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE);
+    String[] COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK =
+        (String[]) ArrayUtils.concat(
+            EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONCLICK,
+            UNIVERSAL_ATTRIBUTES);
+    String[] COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK_WITHOUT_STYLE =
+        (String[]) ArrayUtils.concat(
+            EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONCLICK,
+            UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE);
+    String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED =
+        (String[]) ArrayUtils.concat(
+            COMMON_PASSTROUGH_ATTRIBUTES,
+            COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
+            COMMON_FIELD_EVENT_ATTRIBUTES);
+    String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE =
+        (String[]) ArrayUtils.concat(
+            COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_STYLE,
+            COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
+            COMMON_FIELD_EVENT_ATTRIBUTES);
+    String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            COMMON_PASSTROUGH_ATTRIBUTES,
+            COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
+            COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONFOCUS);
+    String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS_AND_ONCLICK =
+        (String[]) ArrayUtils.concat(
+            COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK,
+            COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
+            COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONFOCUS);
+    String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONCLICK =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK,
+            COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED,
+            COMMON_FIELD_EVENT_ATTRIBUTES);
+    String[] COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONMOUSEOVER_AND_ONMOUSEOUT =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONMOUSEOVER_AND_ONMOUSEOUT,
+            UNIVERSAL_ATTRIBUTES);
+    String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS =
+        (String[]) ArrayUtils.concat(
+            UNIVERSAL_ATTRIBUTES,
+            COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED);
+    String[] COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE_AND_EVENTS =
+        (String[]) ArrayUtils.concat(
+            UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE,
+            COMMON_FIELD_ATTRIBUTES_WITHOUT_DISABLED);
+    
+    // <a>
+    String TARGET_ATTR = "target";  //used by <a> and <form>
+    String CHARSET_ATTR     = "charset";
+    String COORDS_ATTR      = "coords";
+    String HREF_ATTR    = "href";
+    String HREFLANG_ATTR    = "hreflang";
+    String REL_ATTR         = "rel";
+    String REV_ATTR         = "rev";
+    String SHAPE_ATTR       = "shape";
+    String TYPE_ATTR        = "type";
+    String[] ANCHOR_ATTRIBUTES =
+    {
+        ACCESSKEY_ATTR,
+        CHARSET_ATTR,
+        COORDS_ATTR,
+        HREFLANG_ATTR,
+        REL_ATTR,
+        REV_ATTR,
+        SHAPE_ATTR,
+        TABINDEX_ATTR,
+        TARGET_ATTR,
+        TYPE_ATTR
+    };
+    String[] ANCHOR_PASSTHROUGH_ATTRIBUTES =
+        (String[]) ArrayUtils.concat(
+            ANCHOR_ATTRIBUTES,
+            COMMON_PASSTROUGH_ATTRIBUTES,
+            COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONSELECT_AND_ONCHANGE);
+    String[] ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_STYLE =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            ANCHOR_ATTRIBUTES,
+            COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_STYLE,
+            COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONSELECT_AND_ONCHANGE);
+    String[] ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_ONCLICK_WITHOUT_STYLE =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            ANCHOR_ATTRIBUTES,
+            COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONCLICK_WITHOUT_STYLE,
+            COMMON_FIELD_EVENT_ATTRIBUTES_WITHOUT_ONSELECT_AND_ONCHANGE);
+    String[] ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
+        (String[]) ArrayUtils.concat(
+            ANCHOR_ATTRIBUTES,
+            UNIVERSAL_ATTRIBUTES);
+    String[] ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_STYLE_AND_EVENTS =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            ANCHOR_ATTRIBUTES,
+            UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE);
+
+    // <form>
+    String ACCEPT_CHARSET_ATTR = "accept-charset";
+    String ENCTYPE_ATTR = "enctype";
+    String ONRESET_ATTR = "onreset";
+    String ONSUMBIT_ATTR = "onsubmit";
+    String[] FORM_ATTRIBUTES =
+    {
+        ACCEPT_ATTR,
+        ACCEPT_CHARSET_ATTR,
+        ENCTYPE_ATTR,
+        ONRESET_ATTR,
+        ONSUMBIT_ATTR,
+        TARGET_ATTR,
+    };
+    String[] FORM_PASSTHROUGH_ATTRIBUTES =
+        (String[]) ArrayUtils.concat(
+            FORM_ATTRIBUTES,
+            COMMON_PASSTROUGH_ATTRIBUTES);
+    String[] FORM_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
+        (String[]) ArrayUtils.concat(
+            FORM_ATTRIBUTES,
+            UNIVERSAL_ATTRIBUTES);
+    // <img>
+    String SRC_ATTR = "src";
+    String ALT_ATTR = "alt";
+    String HEIGHT_ATTR = "height";
+    String HSPACE_ATTR = "hspace";
+    String ISMAP_ATTR = "ismap";
+    String LONGDESC_ATTR = "longdesc";
+    String USEMAP_ATTR = "usemap";
+    String VSPACE_ATTR = "vspace";
+
+    String[] IMG_ATTRIBUTES =
+    {
+        ALIGN_ATTR,
+        ALT_ATTR,
+        BORDER_ATTR,
+        HEIGHT_ATTR,
+        HSPACE_ATTR,
+        ISMAP_ATTR,
+        LONGDESC_ATTR,
+        USEMAP_ATTR,
+        VSPACE_ATTR,
+        WIDTH_ATTR
+    };
+    String[] IMG_PASSTHROUGH_ATTRIBUTES =
+        (String[]) ArrayUtils.concat(
+           IMG_ATTRIBUTES,
+           COMMON_PASSTROUGH_ATTRIBUTES);
+    String[] IMG_PASSTHROUGH_ATTRIBUTES_WITHOUT_ONMOUSEOVER_AND_ONMOUSEOUT =
+        (String[]) ArrayUtils.concat(
+           IMG_ATTRIBUTES,
+           COMMON_PASSTROUGH_ATTRIBUTES_WITHOUT_ONMOUSEOVER_AND_ONMOUSEOUT);
+    String[] IMG_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
+        (String[]) ArrayUtils.concat(
+           IMG_ATTRIBUTES,
+           UNIVERSAL_ATTRIBUTES);
+    // <input>
+    String SIZE_ATTR = "size";
+    String AUTOCOMPLETE_ATTR = "autocomplete";
+    String CHECKED_ATTR = "checked";
+    String MAXLENGTH_ATTR = "maxlength";
+
+    String[] INPUT_ATTRIBUTES = {
+        ALIGN_ATTR,
+        ALT_ATTR,
+        CHECKED_ATTR,
+        MAXLENGTH_ATTR,
+        READONLY_ATTR,
+        SIZE_ATTR
+    };
+    String[] INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED =
+        (String[]) ArrayUtils.concat(
+                INPUT_ATTRIBUTES,
+                COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED);
+    String[] INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE =
+        (String[]) ArrayUtils.concat(
+                INPUT_ATTRIBUTES,
+                COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE);
+
+    String[] INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS_AND_ONCLICK =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+                INPUT_ATTRIBUTES,
+                COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONFOCUS_AND_ONCLICK);
+
+    String[] INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS =
+        (String[]) ArrayUtils.concat(
+                INPUT_ATTRIBUTES,
+                COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
+    
+    String[] INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE_AND_EVENTS =
+        (String[]) ArrayUtils.concat(
+                INPUT_ATTRIBUTES,
+                COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE_AND_EVENTS);
+
+    //values for input-type attribute
+    String INPUT_TYPE_SUBMIT = "submit";
+    String INPUT_TYPE_IMAGE = "image";
+    String INPUT_TYPE_HIDDEN = "hidden";
+    String INPUT_TYPE_CHECKBOX = "checkbox";
+    String INPUT_TYPE_PASSWORD = "password";
+    String INPUT_TYPE_TEXT = "text";
+    String INPUT_TYPE_RADIO = "radio";
+    String INPUT_TYPE_BUTTON = "button";
+
+    // <button>
+    String[] BUTTON_ATTRIBUTES =
+    {
+        ALIGN_ATTR,
+        ALT_ATTR,
+    };
+    String[] BUTTON_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            BUTTON_ATTRIBUTES,
+            COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED);
+    String[] BUTTON_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONCLICK =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            BUTTON_ATTRIBUTES,
+            COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_ONCLICK);
+    String[] BUTTON_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            BUTTON_ATTRIBUTES,
+            COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
+
+    // <iframe>
+    String FRAMEBORDER_ATTR = "frameborder";
+    String SCROLLING_ATTR = "scrolling";
+
+    // <label>
+    String FOR_ATTR = "for";
+    String[] LABEL_ATTRIBUTES =
+    {
+        ACCESSKEY_ATTR,
+        ONBLUR_ATTR,
+        ONFOCUS_ATTR
+        //FOR_ATTR is no pass through !
+    };
+    String[] LABEL_ATTRIBUTES_WITHOUT_EVENTS =
+    {
+        ACCESSKEY_ATTR
+    };
+    String[] LABEL_PASSTHROUGH_ATTRIBUTES =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            LABEL_ATTRIBUTES,
+            COMMON_PASSTROUGH_ATTRIBUTES);
+    String[] LABEL_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            LABEL_ATTRIBUTES_WITHOUT_EVENTS,
+            UNIVERSAL_ATTRIBUTES);
+
+    // <select>
+    String MULTIPLE_ATTR = "multiple";
+
+    String[] SELECT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED = 
+            COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED;
+    String[] SELECT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS = 
+        COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS;
+
+    // <table>
+    String BGCOLOR_ATTR = "bgcolor";
+    String CELLPADDING_ATTR = "cellpadding";
+    String CELLSPACING_ATTR = "cellspacing";
+    String FRAME_ATTR = "frame";
+    String RULES_ATTR = "rules";
+    String SUMMARY_ATTR = "summary";
+    String[] TABLE_ATTRIBUTES = {
+        ALIGN_ATTR,
+        BGCOLOR_ATTR,
+        BORDER_ATTR,
+        CELLPADDING_ATTR,
+        CELLSPACING_ATTR,
+        FRAME_ATTR,
+        RULES_ATTR,
+        SUMMARY_ATTR,
+        WIDTH_ATTR
+    };
+    String[] TABLE_PASSTHROUGH_ATTRIBUTES =
+        (String[]) ArrayUtils.concat(
+            TABLE_ATTRIBUTES,
+            COMMON_PASSTROUGH_ATTRIBUTES);
+    String[] TABLE_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
+        (String[]) ArrayUtils.concat(
+            TABLE_ATTRIBUTES,
+            UNIVERSAL_ATTRIBUTES);
+
+    // <textarea>
+    String COLS_ATTR = "cols";
+    String ROWS_ATTR = "rows";
+    String WRAP_ATTR = "wrap";
+    String[] TEXTAREA_ATTRIBUTES =
+    {
+        COLS_ATTR,
+        READONLY_ATTR,
+        ROWS_ATTR,
+        WRAP_ATTR
+    };
+    String[] TEXTAREA_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED =
+        (String[]) ArrayUtils.concat(
+            TEXTAREA_ATTRIBUTES,
+            COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED);
+    String[] TEXTAREA_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS =
+        (String[]) ArrayUtils.concat(
+            TEXTAREA_ATTRIBUTES,
+            COMMON_FIELD_PASSTROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
+
+    // <input type=file>
+    String[] INPUT_FILE_UPLOAD_ATTRIBUTES =
+    {
+        ACCEPT_ATTR
+    };
+    String[] INPUT_FILE_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED =
+        (String[]) ArrayUtils.concat(
+            INPUT_FILE_UPLOAD_ATTRIBUTES,
+            INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED);
+    String[] INPUT_FILE_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS =
+        (String[]) ArrayUtils.concat(
+            INPUT_FILE_UPLOAD_ATTRIBUTES,
+            INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
+
+    /*
+    String[] MESSAGE_PASSTHROUGH_ATTRIBUTES =
+        (String[]) ArrayUtils.concat(
+            new String[] {DIR_ATTR, LANG_ATTR, TITLE_ATTR, STYLE_ATTR, STYLE_CLASS_ATTR},
+            EVENT_HANDLER_ATTRIBUTES);
+            */
+
+    String[] MESSAGE_PASSTHROUGH_ATTRIBUTES_WITHOUT_TITLE_STYLE_AND_STYLE_CLASS =
+        (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(
+            new String[] {DIR_ATTR, LANG_ATTR},
+            EVENT_HANDLER_ATTRIBUTES);
+
+
+    // selectOne/Many table
+    String[] SELECT_TABLE_PASSTHROUGH_ATTRIBUTES =
+        new String[] {STYLE_ATTR, STYLE_CLASS_ATTR, BORDER_ATTR};
+
+    String COMPACT_ATTR = "compact";
+    String[] UL_ATTRIBUTES = {
+        COMPACT_ATTR,
+        TYPE_ATTR
+    };
+    String[] UL_PASSTHROUGH_ATTRIBUTES =
+        (String[]) ArrayUtils.concat(
+            UL_ATTRIBUTES,
+            COMMON_PASSTROUGH_ATTRIBUTES);
+    String[] UL_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
+        (String[]) ArrayUtils.concat(
+            UL_ATTRIBUTES,
+            UNIVERSAL_ATTRIBUTES);
+
+    //body
+    String BODY_ELEM = "body";
+    String BODY_TARGET = BODY_ELEM;
+    
+    String ONLOAD_ATTR = "onload";
+    String ONUNLOAD_ATTR = "onunload";
+    String ALINK_ATTR = "alink";
+    String VLINK_ATTR = "vlink";
+    String LINK_ATTR = "link";
+    String TEXT_ATTR = "text";
+    String BACKGROUND_ATTR = "background";
+
+    String[] BODY_ATTRIBUTES =
+    {
+        ONLOAD_ATTR,
+        ONUNLOAD_ATTR,
+        ALINK_ATTR,
+        VLINK_ATTR,
+        LINK_ATTR,
+        TEXT_ATTR,
+        BACKGROUND_ATTR,
+        BGCOLOR_ATTR
+    };
+    
+    String[] BODY_ATTRIBUTES_WITHOUT_EVENTS =
+    {
+        ALINK_ATTR,
+        VLINK_ATTR,
+        LINK_ATTR,
+        TEXT_ATTR,
+        BACKGROUND_ATTR,
+        BGCOLOR_ATTR
+    };
+
+    String[] BODY_PASSTHROUGH_ATTRIBUTES =
+        (String[]) ArrayUtils.concat(
+                COMMON_PASSTROUGH_ATTRIBUTES,
+                BODY_ATTRIBUTES);
+    String[] BODY_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS =
+        (String[]) ArrayUtils.concat(
+                UNIVERSAL_ATTRIBUTES,
+                BODY_ATTRIBUTES_WITHOUT_EVENTS);
+    //HTML attributes needed for renderding only
+    String ID_ATTR = "id";
+    String NAME_ATTR = "name";
+    String VALUE_ATTR = "value";
+    String METHOD_ATTR = "method";
+    String ACTION_ATTR = "action";
+    String COLSPAN_ATTR = "colspan";
+    String SCOPE_ATTR = "scope";
+    String LABEL_ATTR = "label";
+    String SELECTED_ATTR = "selected";
+    String XMLNS_ATTR = "xmlns";
+
+    //HTML attributes values
+    String SCOPE_COLGROUP_VALUE = "colgroup";
+    String SCOPE_ROW_VALUE = "row";
+
+    //HTML element constants
+    String SPAN_ELEM = "span";
+    String DIV_ELEM = "div";
+    String INPUT_ELEM = "input";
+    String BUTTON_ELEM = "button";
+    String SELECT_ELEM = "select";
+    String OPTION_ELEM = "option";
+    String OPTGROUP_ELEM = "optgroup";
+    String TEXTAREA_ELEM = "textarea";
+    String FORM_ELEM = "form";
+    String ANCHOR_ELEM = "a";
+    String H1_ELEM = "h1";
+    String H2_ELEM = "h2";
+    String H3_ELEM = "h3";
+    String H4_ELEM = "h4";
+    String H5_ELEM = "h5";
+    String H6_ELEM = "h6";
+    String IFRAME_ELEM = "iframe";
+    String IMG_ELEM = "img";
+    String LABEL_ELEM = "label";
+    String TABLE_ELEM = "table";
+    String CAPTION_ELEM = "caption";
+    String TR_ELEM = "tr";
+    String TH_ELEM = "th";
+    String TD_ELEM = "td";
+    String TBODY_ELEM = "tbody";
+    String TFOOT_ELEM = "tfoot";
+    String THEAD_ELEM = "thead";
+    String STYLE_ELEM = "style";
+    String SCRIPT_ELEM = "script";
+    String SCRIPT_TYPE_ATTR = "type";
+    String SCRIPT_TYPE_TEXT_JAVASCRIPT = "text/javascript";
+    String STYLE_TYPE_TEXT_CSS = "text/css";
+    String SCRIPT_LANGUAGE_ATTR = "language";
+    String SCRIPT_LANGUAGE_JAVASCRIPT = "JavaScript";
+    String SCRIPT_ELEM_DEFER_ATTR = "defer";
+    String LINK_ELEM = "link";
+    String STYLESHEET_VALUE = "stylesheet";
+    String UL_ELEM = "ul";
+    String OL_ELEM = "ol";
+    String LI_ELEM = "li";
+
+
+    //HTML simple element constants
+    String BR_ELEM = "br";
+
+
+    //HTML entities
+    String NBSP_ENTITY = "&#160;";
+
+    String HREF_PATH_SEPARATOR = "/";
+    String HREF_PATH_FROM_PARAM_SEPARATOR = "?";
+    //removed because wrong for XHTML and not used anyway: String HREF_PARAM_SEPARATOR = "&";
+    String HREF_PARAM_NAME_FROM_VALUE_SEPARATOR = "=";
+
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlBodyRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlBodyRendererBase.java
new file mode 100644
index 0000000..032a5ea
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlBodyRendererBase.java
@@ -0,0 +1,124 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit.html;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import javax.faces.application.ProjectStage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import org.apache.myfaces.shared.renderkit.ClientBehaviorEvents;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
+
+/**
+ * Renderer used by h:body component
+ * 
+ * @since 2.0
+ * @author Leonardo Uribe (latest modification by $Author$)
+ * @version $Revision$ $Date$
+ */
+public class HtmlBodyRendererBase extends HtmlRenderer
+{
+
+    @Override
+    public void decode(FacesContext context, UIComponent component)
+    {
+        // check for npe
+        super.decode(context, component);
+        
+        HtmlRendererUtils.decodeClientBehaviors(context, component);
+    }
+
+    @Override
+    public void encodeBegin(FacesContext facesContext, UIComponent component)
+            throws IOException
+    {
+        super.encodeBegin(facesContext, component); //check for NP
+
+        ResponseWriter writer = facesContext.getResponseWriter();
+        Map<String, List<ClientBehavior>> behaviors = null;
+        if (component instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
+        {
+            behaviors = ((ClientBehaviorHolder) component).getClientBehaviors();
+            if (!behaviors.isEmpty())
+            {
+                ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, writer);
+            }
+
+            writer.startElement(HTML.BODY_ELEM, component);
+            if (!behaviors.isEmpty())
+            {
+                // Note "name" does not exists as attribute in <body> tag.
+                writer.writeAttribute(HTML.ID_ATTR, component.getClientId(facesContext),null);
+            }
+            else
+            {
+                HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+            }
+            HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, component, behaviors);
+            HtmlRendererUtils.renderBehaviorizedAttribute(facesContext, writer, HTML.ONLOAD_ATTR, component,
+                    ClientBehaviorEvents.LOAD, behaviors, HTML.ONLOAD_ATTR);
+            HtmlRendererUtils.renderBehaviorizedAttribute(facesContext, writer, HTML.ONUNLOAD_ATTR, component,
+                    ClientBehaviorEvents.UNLOAD, behaviors, HTML.ONUNLOAD_ATTR);
+            HtmlRendererUtils.renderHTMLAttributes(writer, component,
+                    HTML.BODY_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
+            HtmlRendererUtils.renderHTMLAttribute(writer, component, HTML.XMLNS_ATTR , HTML.XMLNS_ATTR);
+            
+        }
+        else
+        {
+            writer.startElement(HTML.BODY_ELEM, component);
+            HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+            HtmlRendererUtils.renderHTMLAttributes(writer, component,
+                    HTML.BODY_PASSTHROUGH_ATTRIBUTES);
+            HtmlRendererUtils.renderHTMLAttribute(writer, component, HTML.XMLNS_ATTR , HTML.XMLNS_ATTR);
+        }
+    }
+
+    @Override
+    public void encodeEnd(FacesContext facesContext, UIComponent component)
+            throws IOException
+    {
+        super.encodeEnd(facesContext, component); //check for NP
+
+        ResponseWriter writer = facesContext.getResponseWriter();
+        UIViewRoot root = facesContext.getViewRoot();
+        for (UIComponent child : root.getComponentResources(facesContext,
+                HTML.BODY_TARGET))
+        {
+            child.encodeAll(facesContext);
+        }
+        
+        // render all unhandled FacesMessages when ProjectStage is Development
+        if (facesContext.isProjectStage(ProjectStage.Development))
+        {
+            HtmlRendererUtils.renderUnhandledFacesMessages(facesContext);
+        }
+        
+        writer.endElement(HTML.BODY_ELEM);
+    }
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java
new file mode 100644
index 0000000..7a619e6
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java
@@ -0,0 +1,666 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit.html;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import javax.faces.component.UICommand;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIParameter;
+import javax.faces.component.ValueHolder;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.behavior.ClientBehaviorHint;
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.faces.component.html.HtmlCommandButton;
+import javax.faces.component.html.HtmlCommandLink;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.event.ActionEvent;
+
+import org.apache.myfaces.shared.config.MyfacesConfig;
+import org.apache.myfaces.shared.renderkit.ClientBehaviorEvents;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.renderkit.html.util.FormInfo;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.util._ComponentUtils;
+
+/**
+ * @author Manfred Geiler (latest modification by $Author$)
+ * @author Thomas Spiegl
+ * @author Anton Koinov
+ * @version $Revision$ $Date$
+ */
+public class HtmlButtonRendererBase
+    extends HtmlRenderer
+{
+    private static final String IMAGE_BUTTON_SUFFIX_X = ".x";
+    private static final String IMAGE_BUTTON_SUFFIX_Y = ".y";
+
+    public static final String ACTION_FOR_LIST = "org.apache.myfaces.ActionForList";
+
+    public void decode(FacesContext facesContext, UIComponent uiComponent)
+    {
+        org.apache.myfaces.shared.renderkit.RendererUtils.checkParamValidity(facesContext, uiComponent, UICommand.class);
+
+        //super.decode must not be called, because value is handled here
+        if (!isReset(uiComponent) && isSubmitted(facesContext, uiComponent))
+        {
+            uiComponent.queueEvent(new ActionEvent(uiComponent));
+
+            org.apache.myfaces.shared.renderkit.RendererUtils.initPartialValidationAndModelUpdate(uiComponent, facesContext);
+            
+            if (uiComponent instanceof ClientBehaviorHolder &&
+                    !HtmlRendererUtils.isDisabled(uiComponent))
+            {
+                HtmlRendererUtils.decodeClientBehaviors(facesContext, uiComponent);
+            }
+        }
+    }
+
+    private static boolean isReset(UIComponent uiComponent)
+    {
+        return "reset".equals((String) uiComponent.getAttributes().get(HTML.TYPE_ATTR));
+    }
+    
+    private static boolean isButton(UIComponent uiComponent)
+    {
+        return "button".equals((String) uiComponent.getAttributes().get(HTML.TYPE_ATTR));
+    }
+
+    private static boolean isSubmitted(FacesContext facesContext, UIComponent uiComponent)
+    {
+        String clientId = uiComponent.getClientId(facesContext);
+        Map paramMap = facesContext.getExternalContext().getRequestParameterMap();
+        FormInfo formInfo = _ComponentUtils.findNestingForm(uiComponent, facesContext);
+        String hiddenLink = null;
+         
+        if (formInfo != null)
+        {
+            hiddenLink = (String) facesContext.getExternalContext().getRequestParameterMap().get(
+                HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo));
+        }
+        return paramMap.containsKey(clientId) || paramMap.containsKey(clientId + IMAGE_BUTTON_SUFFIX_X) 
+            || paramMap.containsKey(clientId + IMAGE_BUTTON_SUFFIX_Y)
+            || (hiddenLink != null && hiddenLink.equals (clientId))
+            || HtmlRendererUtils.isPartialOrBehaviorSubmit(facesContext, clientId);
+    }
+
+    public void encodeEnd(FacesContext facesContext, UIComponent uiComponent)
+            throws IOException
+    {
+        org.apache.myfaces.shared.renderkit.RendererUtils.checkParamValidity(facesContext, uiComponent, UICommand.class);
+
+        String clientId = uiComponent.getClientId(facesContext);
+
+        ResponseWriter writer = facesContext.getResponseWriter();
+        
+        // commandButton does not need to be nested in a form since JSF 2.0
+        FormInfo formInfo = findNestingForm(uiComponent, facesContext);
+
+        boolean reset = isReset(uiComponent);
+        boolean button = isButton(uiComponent);
+
+        Map<String, List<ClientBehavior>> behaviors = null;
+        if (uiComponent instanceof ClientBehaviorHolder)
+        {
+            behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
+            if (!behaviors.isEmpty())
+            {
+                ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, writer);
+            }
+        }
+        
+        // If we are nested in a form, and we have javascript enabled, and autoscroll is enabled, 
+        // we should write the form submit script
+        // (define oamSetHiddenInput, oamClearHiddenInput, oamSubmitForm)
+        // because oamSetHiddenInput is called on onclick function
+        List<UIParameter> validParams = HtmlRendererUtils.getValidUIParameterChildren(
+                facesContext, getChildren(uiComponent), false, false);
+        
+        if (formInfo != null && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext())
+                && (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isAutoScroll() ||
+                        (validParams != null && !validParams.isEmpty() )))
+        {        
+            HtmlRendererUtils.renderFormSubmitScript(facesContext);
+        }
+        
+        String commandOnclick = (String)uiComponent.getAttributes().get(HTML.ONCLICK_ATTR);
+        
+        if (commandOnclick != null && (validParams != null && !validParams.isEmpty() ) )
+        {
+            ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, writer);
+        }
+
+        writer.startElement(HTML.INPUT_ELEM, uiComponent);
+
+        writer.writeAttribute(HTML.ID_ATTR, clientId, org.apache.myfaces.shared.renderkit.JSFAttr.ID_ATTR);
+        writer.writeAttribute(HTML.NAME_ATTR, clientId, JSFAttr.ID_ATTR);
+
+        ExternalContext externalContext = facesContext.getExternalContext();
+
+        String image = RendererUtils.getIconSrc(facesContext, uiComponent, JSFAttr.IMAGE_ATTR);
+        if (image != null)
+        {
+            writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_IMAGE, org.apache.myfaces.shared.renderkit.JSFAttr.TYPE_ATTR);
+            writer.writeURIAttribute(HTML.SRC_ATTR, image, org.apache.myfaces.shared.renderkit.JSFAttr.IMAGE_ATTR);
+        }
+        else
+        {
+            String type = getType(uiComponent);
+
+            if (type == null || (!reset && !button))
+            {
+                type = HTML.INPUT_TYPE_SUBMIT;
+            }
+            writer.writeAttribute(HTML.TYPE_ATTR, type, org.apache.myfaces.shared.renderkit.JSFAttr.TYPE_ATTR);
+            Object value = getValue(uiComponent);
+            if (value != null)
+            {
+                writer.writeAttribute(org.apache.myfaces.shared.renderkit.html.HTML.VALUE_ATTR, value, org.apache.myfaces.shared.renderkit.JSFAttr.VALUE_ATTR);
+            }
+        }
+        
+        if (JavascriptUtils.isJavascriptAllowed(externalContext) &&
+            (HtmlRendererUtils.hasClientBehavior(ClientBehaviorEvents.CLICK, behaviors, facesContext) ||
+             HtmlRendererUtils.hasClientBehavior(ClientBehaviorEvents.ACTION, behaviors, facesContext)))
+        {
+            if (!reset && !button)
+            {
+                String onClick = buildBehaviorizedOnClick(uiComponent, behaviors, facesContext, writer, formInfo, validParams);
+                if (onClick.length() != 0)
+                {
+                    writer.writeAttribute(HTML.ONCLICK_ATTR, onClick.toString(), null);
+                }
+            }
+            else
+            {
+                Collection<ClientBehaviorContext.Parameter> paramList = HtmlRendererUtils.getClientBehaviorContextParameters(
+                        HtmlRendererUtils.mapAttachedParamsToStringValues(facesContext, uiComponent));
+                    
+                String onClick = HtmlRendererUtils.buildBehaviorChain(facesContext, uiComponent,
+                        ClientBehaviorEvents.CLICK, paramList, ClientBehaviorEvents.ACTION, paramList, behaviors,
+                        commandOnclick , null);
+                if (onClick.length() != 0)
+                {
+                    writer.writeAttribute(HTML.ONCLICK_ATTR, onClick.toString(), null);
+                }
+            }
+            
+            Map<String, Object> attributes = uiComponent.getAttributes(); 
+            
+            HtmlRendererUtils.buildBehaviorChain(
+                    facesContext, uiComponent, ClientBehaviorEvents.DBLCLICK, null, behaviors,   
+                        (String) attributes.get(HTML.ONDBLCLICK_ATTR), "");
+            
+            HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent,
+                                                   HTML.BUTTON_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);            
+        }
+        else if (JavascriptUtils.isJavascriptAllowed(externalContext))
+        {
+            //fallback into the pre 2.0 code to keep backwards compatibility with libraries which rely on internals
+            if (!reset && !button)
+            {
+                StringBuffer onClick = buildOnClick(uiComponent, facesContext, writer, validParams);
+                if (onClick.length() != 0)
+                {
+                    writer.writeAttribute(HTML.ONCLICK_ATTR, onClick.toString(), null);
+                }
+            }
+            else
+            {
+                HtmlRendererUtils.renderHTMLAttribute(writer, uiComponent, HTML.ONCLICK_ATTR, HTML.ONCLICK_ATTR);
+            }
+            HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent,
+                                                   HTML.BUTTON_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
+        }
+        else
+        {
+            HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent,
+                                                   HTML.BUTTON_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
+        }
+        
+        if (behaviors != null && !behaviors.isEmpty())
+        {
+            HtmlRendererUtils.renderBehaviorizedEventHandlersWithoutOnclick(facesContext, writer, uiComponent, behaviors);
+            HtmlRendererUtils.renderBehaviorizedFieldEventHandlers(facesContext, writer, uiComponent, behaviors);
+        }
+        else
+        {
+            HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent,
+                    HTML.EVENT_HANDLER_ATTRIBUTES_WITHOUT_ONCLICK);
+            HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent,
+                    HTML.COMMON_FIELD_EVENT_ATTRIBUTES);
+        }
+
+        if (isDisabled(facesContext, uiComponent))
+        {
+            writer.writeAttribute(HTML.DISABLED_ATTR, Boolean.TRUE, org.apache.myfaces.shared.renderkit.JSFAttr.DISABLED_ATTR);
+        }
+        
+        if (isReadonly(facesContext, uiComponent))
+        {
+            writer.writeAttribute(HTML.READONLY_ATTR, Boolean.TRUE, org.apache.myfaces.shared.renderkit.JSFAttr.READONLY_ATTR);
+        }
+
+        writer.endElement(HTML.INPUT_ELEM);
+        
+        if (formInfo != null)
+        {
+            HtmlFormRendererBase.renderScrollHiddenInputIfNecessary(formInfo.getForm(), facesContext, writer);
+        }
+        
+        // render the UIParameter children of the commandButton (since 2.0)
+        /*
+        List<UIParameter> validParams = HtmlRendererUtils.getValidUIParameterChildren(
+                facesContext, uiComponent.getChildren(), false, false);
+        for (UIParameter param : validParams)
+        {
+            HtmlInputHidden parameterComponent = new HtmlInputHidden();
+            parameterComponent.setId(param.getName());
+            parameterComponent.setValue(param.getValue());
+            parameterComponent.encodeAll(facesContext);
+        }*/
+    }
+
+    private boolean hasSubmittingBehavior(Map<String, List<ClientBehavior>> clientBehaviors, String eventName)
+    {
+        List<ClientBehavior> eventBehaviors = clientBehaviors.get(eventName);
+        if (eventBehaviors != null && !eventBehaviors.isEmpty()) {
+            for (ClientBehavior behavior : eventBehaviors) {
+                if (behavior.getHints().contains(ClientBehaviorHint.SUBMITTING)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    
+    protected String buildBehaviorizedOnClick(UIComponent uiComponent, Map<String, List<ClientBehavior>> behaviors, 
+                                              FacesContext facesContext, ResponseWriter writer, FormInfo nestedFormInfo, List<UIParameter> validParams)
+        throws IOException
+    {
+        //we can omit autoscroll here for now maybe we should check if it is an ajax behavior and omit it only in this case
+        StringBuilder userOnClick = new StringBuilder();
+        //user onclick part 
+        String commandOnClick = (String) uiComponent.getAttributes().get(HTML.ONCLICK_ATTR);
+
+        if (commandOnClick != null) {
+            userOnClick.append(commandOnClick);
+            userOnClick.append(';');
+        }
+
+        StringBuffer rendererOnClick = new StringBuffer();
+
+        if (nestedFormInfo != null) 
+        {
+            if (validParams != null && !validParams.isEmpty() )
+            {
+                rendererOnClick.append(buildServerOnclick(facesContext, uiComponent, uiComponent.getClientId(facesContext), nestedFormInfo, validParams));
+            }
+            else
+            {
+                String formName = nestedFormInfo.getFormName();
+                if (JavascriptUtils.isRenderClearJavascriptOnButton(facesContext.getExternalContext())) {
+                    //call the script to clear the form (clearFormHiddenParams_<formName>) method
+                    HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(rendererOnClick, formName);
+                }
+        
+                if (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isAutoScroll()) {
+                    HtmlRendererUtils.appendAutoScrollAssignment(rendererOnClick, formName);
+                }
+            }
+        }
+
+        //according to the specification in jsf.util.chain jdocs and the spec document we have to use
+        //jsf.util.chain to chain the functions and
+        Collection<ClientBehaviorContext.Parameter> paramList = HtmlRendererUtils.getClientBehaviorContextParameters(
+                HtmlRendererUtils.mapAttachedParamsToStringValues(facesContext, uiComponent));
+        
+        return HtmlRendererUtils.buildBehaviorChain(facesContext, uiComponent,
+                ClientBehaviorEvents.CLICK, paramList, ClientBehaviorEvents.ACTION, paramList, behaviors,
+                userOnClick.toString() , rendererOnClick.toString());
+    }
+    
+    protected String buildServerOnclick(FacesContext facesContext, UIComponent component, 
+            String clientId, FormInfo formInfo, List<UIParameter> validParams) throws IOException
+    {
+        UIComponent nestingForm = formInfo.getForm();
+        String formName = formInfo.getFormName();
+
+        StringBuffer onClick = new StringBuffer();
+
+        if (RendererUtils.isAdfOrTrinidadForm(formInfo.getForm())) {
+            onClick.append("submitForm('");
+            onClick.append(formInfo.getForm().getClientId(facesContext));
+            onClick.append("',1,{source:'");
+            onClick.append(component.getClientId(facesContext));
+            onClick.append("'});return false;");
+        }
+        else {
+            StringBuffer params = addChildParameters(facesContext, component, nestingForm, validParams);
+
+            String target = getTarget(component);
+
+            if (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isRenderFormSubmitScriptInline())
+            {
+                onClick.append("return ").
+                    append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME).append("('").
+                    append(formName).append("','").
+                    append(component.getClientId(facesContext)).append("'");                    
+            }
+            else
+            {
+                onClick.append("return ").
+                    append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME_JSF2).append("('").
+                    append(formName).append("','").
+                    append(component.getClientId(facesContext)).append("'");
+            }
+
+            if (params.length() > 2 || target != null) {
+                onClick.append(",").
+                    append(target == null ? "null" : ("'" + target + "'")).append(",").
+                    append(params);
+            }
+            onClick.append(");");
+
+            //Not necessary since we are using oamSetHiddenInput to create input hidden fields
+            //render hidden field - todo: in here for backwards compatibility
+            //String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo);
+            //addHiddenCommandParameter(facesContext, nestingForm, hiddenFieldName);
+
+        }
+        return onClick.toString();
+    }
+    
+    private StringBuffer addChildParameters(FacesContext context, UIComponent component, UIComponent nestingForm, List<UIParameter> validParams) {
+        //add child parameters
+        StringBuffer params = new StringBuffer();
+        params.append("[");
+        
+        for (UIParameter param : validParams) 
+        {
+            String name = param.getName();
+
+            //Not necessary, since we are using oamSetHiddenInput to create hidden fields
+            if (MyfacesConfig.getCurrentInstance(context.getExternalContext()).isRenderHiddenFieldsForLinkParams())
+            {
+                addHiddenCommandParameter(context, nestingForm, name);
+            }
+
+            Object value = param.getValue();
+
+            //UIParameter is no ValueHolder, so no conversion possible - calling .toString on value....
+            // MYFACES-1832 bad charset encoding for f:param
+            // if HTMLEncoder.encode is called, then
+            // when is called on writer.writeAttribute, encode method
+            // is called again so we have a duplicated encode call.
+            // MYFACES-2726 All '\' and "'" chars must be escaped 
+            // because there will be inside "'" javascript quotes, 
+            // otherwise the value will not correctly restored when
+            // the command is post.
+            //String strParamValue = value != null ? value.toString() : "";
+            String strParamValue = "";
+            if (value != null)
+            {
+                strParamValue = value.toString();
+                StringBuffer buff = null;
+                for (int i = 0; i < strParamValue.length(); i++)
+                {
+                    char c = strParamValue.charAt(i); 
+                    if (c == '\'' || c == '\\')
+                    {
+                        if (buff == null)
+                        {
+                            buff = new StringBuffer();
+                            buff.append(strParamValue.substring(0,i));
+                        }
+                        buff.append('\\');
+                        buff.append(c);
+                    }
+                    else if (buff != null)
+                    {
+                        buff.append(c);
+                    }
+                }
+                if (buff != null)
+                {
+                    strParamValue = buff.toString();
+                }
+            }
+
+            if (params.length() > 1) 
+            {
+                params.append(",");
+            }
+
+            params.append("['");
+            params.append(name);
+            params.append("','");
+            params.append(strParamValue);
+            params.append("']");
+        }
+        params.append("]");
+        return params;
+    }
+
+    private String getTarget(UIComponent component) {
+        // for performance reason: double check for the target attribute
+        String target;
+        if (component instanceof HtmlCommandLink) {
+            target = ((HtmlCommandLink) component).getTarget();
+        }
+        else {
+            target = (String) component.getAttributes().get(HTML.TARGET_ATTR);
+        }
+        return target;
+    }
+
+    protected StringBuffer buildOnClick(UIComponent uiComponent, FacesContext facesContext,
+                                        ResponseWriter writer, List<UIParameter> validParams)
+        throws IOException
+    {
+        /* DUMMY STUFF
+        //Find form
+        UIComponent parent = uiComponent.getParent();
+        while (parent != null && !(parent instanceof UIForm))
+        {
+            parent = parent.getParent();
+        }
+
+        UIForm nestingForm = null;
+        String formName;
+
+        if (parent != null)
+        {
+            //link is nested inside a form
+            nestingForm = (UIForm)parent;
+            formName = nestingForm.getClientId(facesContext);
+
+        }
+        else
+        {
+            //not nested in form, we must add a dummy form at the end of the document
+            formName = DummyFormUtils.DUMMY_FORM_NAME;
+            //dummyFormResponseWriter = DummyFormUtils.getDummyFormResponseWriter(facesContext);
+            //dummyFormResponseWriter.setWriteDummyForm(true);
+            DummyFormUtils.setWriteDummyForm(facesContext, true);
+        }
+        */
+        StringBuffer onClick = new StringBuffer();
+        String commandOnClick = (String) uiComponent.getAttributes().get(HTML.ONCLICK_ATTR);
+
+        if (commandOnClick != null)
+        {
+            onClick.append("var cf = function(){");
+            onClick.append(commandOnClick);
+            onClick.append('}');
+            onClick.append(';');
+            onClick.append("var oamSF = function(){");
+        }
+        
+        FormInfo nestedFormInfo = findNestingForm(uiComponent, facesContext);
+        
+        if (nestedFormInfo != null)
+        {
+            String formName = nestedFormInfo.getFormName();
+            
+            if (validParams != null && !validParams.isEmpty() )
+            {
+                StringBuffer params = addChildParameters(facesContext, uiComponent, nestedFormInfo.getForm(), validParams);
+
+                String target = getTarget(uiComponent);
+
+                if (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isRenderFormSubmitScriptInline())
+                {
+                    onClick.append("return ").
+                        append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME).append("('").
+                        append(formName).append("','").
+                        append(uiComponent.getClientId(facesContext)).append("'");                    
+                }
+                else
+                {
+                    onClick.append("return ").
+                        append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME_JSF2).append("('").
+                        append(formName).append("','").
+                        append(uiComponent.getClientId(facesContext)).append("'");
+                }
+
+                if (params.length() > 2 || target != null) {
+                    onClick.append(",").
+                        append(target == null ? "null" : ("'" + target + "'")).append(",").
+                        append(params);
+                }
+                onClick.append(");");
+
+                //Not necessary since we are using oamSetHiddenInput to create input hidden fields
+                //render hidden field - todo: in here for backwards compatibility
+                if (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isRenderHiddenFieldsForLinkParams())
+                {
+                    String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(nestedFormInfo);
+                    addHiddenCommandParameter(facesContext, nestedFormInfo.getForm(), hiddenFieldName);
+                }
+            }
+            else
+            {
+        
+                if (JavascriptUtils.isRenderClearJavascriptOnButton(facesContext.getExternalContext()) ||
+                        MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isRenderHiddenFieldsForLinkParams() )
+                {
+                    //call the script to clear the form (clearFormHiddenParams_<formName>) method
+                    HtmlRendererUtils.appendClearHiddenCommandFormParamsFunctionCall(onClick, formName);
+                }
+        
+                if (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isAutoScroll()) {
+                    HtmlRendererUtils.appendAutoScrollAssignment(onClick, formName);
+                }
+            }
+        }
+        
+        if (commandOnClick != null)
+        {
+            onClick.append('}');
+            onClick.append(';');
+            onClick.append("return (cf.apply(this, [])==false)? false : oamSF.apply(this, []); ");
+        }  
+
+        //The hidden field has only sense if isRenderClearJavascriptOnButton is
+        //set to true. In other case, this hidden field should not be rendered.
+        //if (JavascriptUtils.isRenderClearJavascriptOnButton(facesContext.getExternalContext()))
+        //{
+            //add hidden field for the case there is no commandLink in the form
+            //String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo);
+            //addHiddenCommandParameter(facesContext, nestingForm, hiddenFieldName);
+        //}
+
+        return onClick;
+    }
+
+    protected void addHiddenCommandParameter(FacesContext facesContext, UIComponent nestingForm, String hiddenFieldName)
+    {
+        if (nestingForm != null)
+        {
+            HtmlFormRendererBase.addHiddenCommandParameter(facesContext, nestingForm, hiddenFieldName);
+        }
+    }
+
+    /**
+     * find nesting form<br />
+     * need to be overrideable to deal with dummyForm stuff in tomahawk.
+     */
+    protected FormInfo findNestingForm(UIComponent uiComponent, FacesContext facesContext)
+    {
+        return RendererUtils.findNestingForm(uiComponent, facesContext);
+    }
+
+    protected boolean isDisabled(FacesContext facesContext, UIComponent uiComponent)
+    {
+        //TODO: overwrite in extended HtmlButtonRenderer and check for enabledOnUserRole
+        if (uiComponent instanceof HtmlCommandButton)
+        {
+            return ((HtmlCommandButton)uiComponent).isDisabled();
+        }
+
+        return org.apache.myfaces.shared.renderkit.RendererUtils.getBooleanAttribute(uiComponent, HTML.DISABLED_ATTR, false);
+        
+    }
+
+    protected boolean isReadonly(FacesContext facesContext, UIComponent uiComponent)
+    {
+        if (uiComponent instanceof HtmlCommandButton)
+        {
+            return ((HtmlCommandButton)uiComponent).isReadonly();
+        }
+        return org.apache.myfaces.shared.renderkit.RendererUtils.getBooleanAttribute(uiComponent, HTML.READONLY_ATTR, false);
+    }
+
+    private String getImage(UIComponent uiComponent)
+    {
+        if (uiComponent instanceof HtmlCommandButton)
+        {
+            return ((HtmlCommandButton)uiComponent).getImage();
+        }
+        return (String)uiComponent.getAttributes().get(JSFAttr.IMAGE_ATTR);
+    }
+
+    private String getType(UIComponent uiComponent)
+    {
+        if (uiComponent instanceof HtmlCommandButton)
+        {
+            return ((HtmlCommandButton)uiComponent).getType();
+        }
+        return (String)uiComponent.getAttributes().get(org.apache.myfaces.shared.renderkit.JSFAttr.TYPE_ATTR);
+    }
+
+    private Object getValue(UIComponent uiComponent)
+    {
+        if (uiComponent instanceof ValueHolder)
+        {
+            return ((ValueHolder)uiComponent).getValue();
+        }
+        return uiComponent.getAttributes().get(JSFAttr.VALUE_ATTR);
+    }
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java
new file mode 100644
index 0000000..f098fdf
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java
@@ -0,0 +1,427 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit.html;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.logging.Logger;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UINamingContainer;
+import javax.faces.component.UISelectBoolean;
+import javax.faces.component.UISelectMany;
+import javax.faces.component.UISelectOne;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.faces.component.html.HtmlSelectBooleanCheckbox;
+import javax.faces.component.html.HtmlSelectManyCheckbox;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.convert.Converter;
+import javax.faces.convert.ConverterException;
+import javax.faces.model.SelectItem;
+import javax.faces.model.SelectItemGroup;
+
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
+
+/**
+ * @author Thomas Spiegl (latest modification by $Author$)
+ * @author Anton Koinov
+ * @version $Revision$ $Date$
+ */
+public class HtmlCheckboxRendererBase extends HtmlRenderer {
+    //private static final Log log = LogFactory
+    //        .getLog(HtmlCheckboxRendererBase.class);
+    private static final Logger log = Logger.getLogger(HtmlCheckboxRendererBase.class.getName());
+
+    private static final String PAGE_DIRECTION = "pageDirection";
+
+    private static final String LINE_DIRECTION = "lineDirection";
+
+    private static final String EXTERNAL_TRUE_VALUE = "true";
+
+    public void encodeEnd(FacesContext facesContext, UIComponent uiComponent)
+            throws IOException {
+        org.apache.myfaces.shared.renderkit.RendererUtils.checkParamValidity(facesContext, uiComponent, null);
+        
+        Map<String, List<ClientBehavior>> behaviors = null;
+        if (uiComponent instanceof ClientBehaviorHolder)
+        {
+            behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
+            if (!behaviors.isEmpty())
+            {
+                ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, facesContext.getResponseWriter());
+            }
+        }
+        
+        if (uiComponent instanceof UISelectBoolean) {
+            Boolean value = org.apache.myfaces.shared.renderkit.RendererUtils.getBooleanValue( uiComponent );
+            boolean isChecked = value != null ? value.booleanValue() : false;
+            renderCheckbox(facesContext, uiComponent, EXTERNAL_TRUE_VALUE, false,isChecked, true, null); //TODO: the selectBoolean is never disabled
+        } else if (uiComponent instanceof UISelectMany) {
+            renderCheckboxList(facesContext, (UISelectMany) uiComponent);
+        } else {
+            throw new IllegalArgumentException("Unsupported component class "
+                    + uiComponent.getClass().getName());
+        }
+    }
+
+    public void renderCheckboxList(FacesContext facesContext,
+            UISelectMany selectMany) throws IOException {
+
+        String layout = getLayout(selectMany);
+        boolean pageDirectionLayout = false; //Default to lineDirection
+        if (layout != null) {
+            if (layout.equals(PAGE_DIRECTION)) {
+                pageDirectionLayout = true;
+            } else if (layout.equals(LINE_DIRECTION)) {
+                pageDirectionLayout = false;
+            } else {
+                log.severe("Wrong layout attribute for component "
+                        + selectMany.getClientId(facesContext) + ": " + layout);
+            }
+        }
+
+        ResponseWriter writer = facesContext.getResponseWriter();
+
+        writer.startElement(HTML.TABLE_ELEM, selectMany);
+        HtmlRendererUtils.renderHTMLAttributes(writer, selectMany,
+                HTML.SELECT_TABLE_PASSTHROUGH_ATTRIBUTES);
+        
+        Map<String, List<ClientBehavior>> behaviors = null;
+        if (selectMany instanceof ClientBehaviorHolder)
+        {
+            behaviors = ((ClientBehaviorHolder) selectMany).getClientBehaviors();
+        }
+        
+        if (behaviors != null && !behaviors.isEmpty())
+        {
+            writer.writeAttribute(HTML.ID_ATTR, selectMany.getClientId(facesContext), null);
+        }
+        else
+        {
+            HtmlRendererUtils.writeIdIfNecessary(writer, selectMany, facesContext);
+        }        
+
+        if (!pageDirectionLayout)
+            writer.startElement(HTML.TR_ELEM, selectMany);
+        
+        Converter converter = getConverter(facesContext, selectMany);
+
+        Set lookupSet = org.apache.myfaces.shared.renderkit.RendererUtils.getSubmittedValuesAsSet(facesContext, selectMany, converter, selectMany);
+        boolean useSubmittedValues = lookupSet != null;
+
+        if (!useSubmittedValues) {
+            lookupSet = org.apache.myfaces.shared.renderkit.RendererUtils.getSelectedValuesAsSet(facesContext, selectMany, converter, selectMany);
+        }
+
+        int itemNum = 0;
+
+        for (Iterator it = org.apache.myfaces.shared.renderkit.RendererUtils.getSelectItemList(selectMany, facesContext)
+                .iterator(); it.hasNext();) {
+            SelectItem selectItem = (SelectItem) it.next();
+            
+            itemNum = renderGroupOrItemCheckbox(facesContext, selectMany, 
+                                                selectItem, useSubmittedValues, lookupSet, 
+                                                converter, pageDirectionLayout, itemNum);
+        }
+
+        if (!pageDirectionLayout)
+            writer.endElement(HTML.TR_ELEM);
+        writer.endElement(HTML.TABLE_ELEM);
+    }
+
+    protected String getLayout(UISelectMany selectMany) {
+        if (selectMany instanceof HtmlSelectManyCheckbox) {
+            return ((HtmlSelectManyCheckbox) selectMany).getLayout();
+        } 
+        
+        return (String) selectMany.getAttributes().get(JSFAttr.LAYOUT_ATTR);
+    }
+    
+    /**
+     * 
+     * @param facesContext
+     * @param uiComponent
+     * @param selectItem
+     * @param useSubmittedValues
+     * @param lookupSet
+     * @param converter
+     * @param pageDirectionLayout
+     * @param itemNum
+     * @return the itemNum for the next option
+     * @throws IOException
+     */
+    protected int renderGroupOrItemCheckbox(FacesContext facesContext,
+                                             UIComponent uiComponent, SelectItem selectItem,
+                                             boolean useSubmittedValues, Set lookupSet,
+                                             Converter converter, boolean pageDirectionLayout, Integer itemNum) throws IOException
+    {
+
+        ResponseWriter writer = facesContext.getResponseWriter();
+
+        boolean isSelectItemGroup = (selectItem instanceof SelectItemGroup);
+
+        UISelectMany selectMany = (UISelectMany) uiComponent;
+
+        if (isSelectItemGroup)
+        {
+            if (pageDirectionLayout)
+                writer.startElement(HTML.TR_ELEM, selectMany);
+
+            writer.startElement(HTML.TD_ELEM, selectMany);
+            writer.write(selectItem.getLabel());
+            writer.endElement(HTML.TD_ELEM);
+
+            if (pageDirectionLayout)
+            {
+                writer.endElement(HTML.TR_ELEM);
+                writer.startElement(HTML.TR_ELEM, selectMany);
+            }
+            writer.startElement(HTML.TD_ELEM, selectMany);
+
+            writer.startElement(HTML.TABLE_ELEM, selectMany);
+            writer.writeAttribute(HTML.BORDER_ATTR, "0", null);
+            
+            if(!pageDirectionLayout)
+                writer.startElement(HTML.TR_ELEM, selectMany);
+
+            SelectItemGroup group = (SelectItemGroup) selectItem;
+            SelectItem[] selectItems = group.getSelectItems();
+            
+            for (SelectItem groupSelectItem : selectItems)
+            {
+                itemNum = renderGroupOrItemCheckbox(facesContext, selectMany, groupSelectItem, useSubmittedValues,
+                                                    lookupSet, converter, pageDirectionLayout, itemNum);
+            }
+
+            if(!pageDirectionLayout)
+                writer.endElement(HTML.TR_ELEM);
+            writer.endElement(HTML.TABLE_ELEM);
+            writer.endElement(HTML.TD_ELEM);
+
+            if (pageDirectionLayout)
+                writer.endElement(HTML.TR_ELEM);
+
+        }
+        else
+        {
+            Object itemValue = selectItem.getValue(); // TODO : Check here for getSubmittedValue. Look at RendererUtils.getValue
+            String itemStrValue = org.apache.myfaces.shared.renderkit.RendererUtils.getConvertedStringValue(facesContext, selectMany, converter, itemValue);
+            
+            boolean checked = lookupSet.contains(itemStrValue);
+            
+            // IF the hideNoSelectionOption attribute of the component is true
+            // AND this selectItem is the "no selection option"
+            // AND there are currently selected items
+            // AND this item (the "no selection option") is not selected
+            if (HtmlRendererUtils.isHideNoSelectionOption(uiComponent) && selectItem.isNoSelectionOption() 
+                    && lookupSet.size() != 0 && !checked)
+            {
+                // do not render this selectItem
+                return itemNum;
+            }
+
+            writer.write("\t\t");
+            if (pageDirectionLayout)
+                writer.startElement(HTML.TR_ELEM, selectMany);
+            writer.startElement(HTML.TD_ELEM, selectMany);
+
+            boolean disabled = selectItem.isDisabled();
+
+            String itemId = renderCheckbox(facesContext, selectMany, itemStrValue, disabled, checked, false, itemNum);
+
+            // label element after the input
+            boolean componentDisabled = isDisabled(facesContext, selectMany);
+            boolean itemDisabled = (componentDisabled || disabled);
+
+            HtmlRendererUtils.renderLabel(writer, selectMany, itemId, selectItem, itemDisabled, checked);
+
+            writer.endElement(HTML.TD_ELEM);
+            if (pageDirectionLayout)
+                writer.endElement(HTML.TR_ELEM);
+            
+            // we rendered one checkbox --> increment itemNum
+            itemNum++;
+        }
+        
+        return itemNum;
+    }
+
+    @Deprecated
+    protected void renderCheckbox(FacesContext facesContext,
+            UIComponent uiComponent, String value, String label,
+            boolean disabled, boolean checked, boolean renderId) throws IOException {
+        renderCheckbox(facesContext, uiComponent, value, disabled, checked, renderId, 0);
+    }
+
+    /**
+     * Renders the input item
+     * @return the 'id' value of the rendered element
+     */
+    protected String renderCheckbox(FacesContext facesContext,
+            UIComponent uiComponent, String value, boolean disabled, boolean checked, boolean renderId, Integer itemNum) throws IOException {
+        String clientId = uiComponent.getClientId(facesContext);
+
+        String itemId = (itemNum == null)? null : clientId + UINamingContainer.getSeparatorChar(facesContext) + itemNum;
+
+        ResponseWriter writer = facesContext.getResponseWriter();
+
+        writer.startElement(HTML.INPUT_ELEM, uiComponent);
+
+        if (itemId != null)
+        {
+            writer.writeAttribute(HTML.ID_ATTR, itemId, null);
+        }
+        else if (renderId) 
+        {
+            writer.writeAttribute(HTML.ID_ATTR, clientId, null);
+        }
+        writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_CHECKBOX, null);
+        writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
+        
+        if (checked) {
+            writer.writeAttribute(HTML.CHECKED_ATTR, org.apache.myfaces.shared.renderkit.html.HTML.CHECKED_ATTR, null);
+        }
+        
+        if (disabled) {
+            writer.writeAttribute(HTML.DISABLED_ATTR, HTML.DISABLED_ATTR, null);
+        }
+
+        if ((value != null) && (value.length() > 0)) {
+            writer.writeAttribute(HTML.VALUE_ATTR, value, null);
+        }
+
+        Map<String, List<ClientBehavior>> behaviors = null;
+        if (uiComponent instanceof UISelectBoolean)
+        {
+            if (uiComponent instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
+            {
+                behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
+                
+                HtmlRendererUtils.renderBehaviorizedOnchangeEventHandler(facesContext, writer, uiComponent, behaviors);
+                HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, uiComponent, behaviors);
+                HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchange(facesContext, writer, uiComponent, behaviors);
+                HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_EVENTS);
+            }
+            else
+            {
+                HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent,
+                        HTML.INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED);
+            }
+        }
+        else
+        {
+            if (uiComponent instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
+            {
+                behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
+                
+                HtmlRendererUtils.renderBehaviorizedOnchangeEventHandler(facesContext, writer, uiComponent, behaviors);
+                HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, uiComponent, behaviors);
+                HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchange(facesContext, writer, uiComponent, behaviors);
+                HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE_AND_EVENTS);
+            }
+            else
+            {
+                HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent,
+                        HTML.INPUT_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED_AND_STYLE);
+            }
+        }
+        if (isDisabled(facesContext, uiComponent)) {
+            writer.writeAttribute(HTML.DISABLED_ATTR, Boolean.TRUE, null);
+        }
+        
+        writer.endElement(HTML.INPUT_ELEM);
+
+        return itemId;
+    }
+
+    protected boolean isDisabled(FacesContext facesContext,
+            UIComponent component) {
+        //TODO: overwrite in extended HtmlCheckboxRenderer and check for
+        // enabledOnUserRole
+        if (component instanceof HtmlSelectBooleanCheckbox) {
+            return ((HtmlSelectBooleanCheckbox) component).isDisabled();
+        } else if (component instanceof HtmlSelectManyCheckbox) {
+            return ((HtmlSelectManyCheckbox) component).isDisabled();
+        } else {
+            return org.apache.myfaces.shared.renderkit.RendererUtils.getBooleanAttribute(component,
+                    HTML.DISABLED_ATTR, false);
+        }
+    }
+
+    public void decode(FacesContext facesContext, UIComponent component) {
+        org.apache.myfaces.shared.renderkit.RendererUtils.checkParamValidity(facesContext, component, null);
+        if (component instanceof UISelectBoolean) {
+            HtmlRendererUtils.decodeUISelectBoolean(facesContext, component);
+        } else if (component instanceof UISelectMany) {
+            HtmlRendererUtils.decodeUISelectMany(facesContext, component);
+        } else {
+            throw new IllegalArgumentException("Unsupported component class "
+                    + component.getClass().getName());
+        }
+        if (component instanceof ClientBehaviorHolder &&
+                !HtmlRendererUtils.isDisabled(component))
+        {
+            HtmlRendererUtils.decodeClientBehaviors(facesContext, component);
+        }
+    }
+
+    public Object getConvertedValue(FacesContext facesContext,
+            UIComponent component, Object submittedValue)
+            throws ConverterException {
+        org.apache.myfaces.shared.renderkit.RendererUtils.checkParamValidity(facesContext, component, null);
+        if (component instanceof UISelectBoolean) {
+            return submittedValue;
+        } else if (component instanceof UISelectMany) {
+            return org.apache.myfaces.shared.renderkit.RendererUtils.getConvertedUISelectManyValue(facesContext,
+                    (UISelectMany) component, submittedValue);
+        } else {
+            throw new IllegalArgumentException("Unsupported component class "
+                    + component.getClass().getName());
+        }
+    }
+    
+    /**
+     * Gets the converter for the given component rendered by this renderer.
+     * @param facesContext
+     * @param component
+     * @return
+     */
+    protected Converter getConverter(FacesContext facesContext,
+            UIComponent component)
+    {
+        if (component instanceof UISelectMany)
+        {
+            return HtmlRendererUtils.findUISelectManyConverterFailsafe(facesContext, 
+                    (UISelectMany) component);
+        }
+        else if (component instanceof UISelectOne)
+        {
+            return HtmlRendererUtils.findUIOutputConverterFailSafe(facesContext, component);
+        }
+        return null;
+    }
+    
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlFormRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlFormRendererBase.java
new file mode 100644
index 0000000..d0b4d3c
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlFormRendererBase.java
@@ -0,0 +1,307 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit.html;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.faces.application.ViewHandler;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIForm;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.faces.component.html.HtmlForm;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import org.apache.myfaces.shared.config.MyfacesConfig;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
+
+/**
+ * @author Manfred Geiler (latest modification by $Author$)
+ * @author Thomas Spiegl
+ * @author Anton Koinov
+ * @version $Revision$ $Date$
+ */
+public class HtmlFormRendererBase
+        extends HtmlRenderer
+{
+    //private static final Log log = LogFactory.getLog(HtmlFormRenderer.class);
+    private static final String FORM_TARGET = HTML.FORM_ELEM;
+    private static final String HIDDEN_SUBMIT_INPUT_SUFFIX = "_SUBMIT";
+    private static final String HIDDEN_SUBMIT_INPUT_VALUE = "1";
+
+    private static final String HIDDEN_COMMAND_INPUTS_SET_ATTR
+            = UIForm.class.getName() + ".org.apache.myfaces.HIDDEN_COMMAND_INPUTS_SET";
+
+    private static final String SCROLL_HIDDEN_INPUT = "org.apache.myfaces.SCROLL_HIDDEN_INPUT";
+
+    public void encodeBegin(FacesContext facesContext, UIComponent component)
+            throws IOException
+    {
+        org.apache.myfaces.shared.renderkit.RendererUtils.checkParamValidity(facesContext, component, UIForm.class);
+
+        UIForm htmlForm = (UIForm)component;
+
+        ResponseWriter writer = facesContext.getResponseWriter();
+        String clientId = htmlForm.getClientId(facesContext);
+        String acceptCharset = getAcceptCharset(facesContext, htmlForm);
+        String actionURL = getActionUrl(facesContext, htmlForm);
+        String method = getMethod(facesContext, htmlForm);
+
+        Map<String, List<ClientBehavior>> behaviors = null;
+        if (component instanceof ClientBehaviorHolder)
+        {
+            behaviors = ((ClientBehaviorHolder) component).getClientBehaviors();
+            if (!behaviors.isEmpty())
+            {
+                ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, writer);
+            }
+        }
+        
+        writer.startElement(HTML.FORM_ELEM, htmlForm);
+        writer.writeAttribute(HTML.ID_ATTR, clientId, null);
+        writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
+        writer.writeAttribute(HTML.METHOD_ATTR, method, null);
+        if (acceptCharset != null) {
+            writer.writeAttribute(HTML.ACCEPT_CHARSET_ATTR, acceptCharset, null);
+        }
+        String encodedActionURL = facesContext.getExternalContext().encodeActionURL(actionURL);
+        
+        writer.writeURIAttribute(HTML.ACTION_ATTR,
+                encodedActionURL,
+                null);
+        
+        if (htmlForm instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
+        {
+            behaviors = ((ClientBehaviorHolder) htmlForm).getClientBehaviors();
+            HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, htmlForm, behaviors);
+            HtmlRendererUtils.renderHTMLAttributes(writer, htmlForm, HTML.FORM_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
+        }
+        else
+        {
+            HtmlRendererUtils.renderHTMLAttributes(writer, htmlForm, HTML.FORM_PASSTHROUGH_ATTRIBUTES);
+        }
+
+        writer.write(""); // force start element tag to be closed
+
+        String encodedPartialActionURL =  facesContext.getExternalContext().encodePartialActionURL(actionURL);
+        
+        if (encodedActionURL != null && encodedPartialActionURL != null
+            && (!encodedActionURL.equals(encodedPartialActionURL)))
+        {
+            HtmlRendererUtils.renderHiddenInputField(writer, "javax.faces.encodedURL", encodedPartialActionURL);
+        }
+        
+        // not needed in this version as nothing is written to the form tag, but
+        // included for backward compatibility to the 1.1.1 patch (JIRA MYFACES-1276)
+        // However, might be needed in the future
+        beforeFormElementsStart(facesContext, component);
+        afterFormElementsStart(facesContext, component);
+    }
+
+    protected String getActionUrl(FacesContext facesContext, UIForm form) {
+        return getActionUrl(facesContext);
+    }
+
+    protected String getMethod(FacesContext facesContext, UIForm form) {
+        return "post";
+    }
+
+    protected String getAcceptCharset(FacesContext facesContext, UIForm form ) {
+        return (String)form.getAttributes().get( JSFAttr.ACCEPTCHARSET_ATTR );
+    }
+
+    public void encodeEnd(FacesContext facesContext, UIComponent component)
+            throws IOException
+    {
+        ResponseWriter writer = facesContext.getResponseWriter();
+
+        beforeFormElementsEnd(facesContext, component);
+
+        //render hidden command inputs
+        Set set =  (Set) facesContext.getExternalContext().getRequestMap().get(
+                getHiddenCommandInputsSetName(facesContext, component)); 
+        if (set != null && !set.isEmpty())
+        {
+            HtmlRendererUtils.renderHiddenCommandFormParams(writer, set);
+
+            String target;
+            if (component instanceof HtmlForm)
+            {
+                target = ((HtmlForm)component).getTarget();
+            }
+            else
+            {
+                target = (String)component.getAttributes().get(HTML.TARGET_ATTR);
+            }
+            HtmlRendererUtils.renderClearHiddenCommandFormParamsFunction(writer,
+                                                                         component.getClientId(facesContext),
+                                                                         set,
+                                                                         target);
+        }
+
+        //write hidden input to determine "submitted" value on decode
+        writer.startElement(HTML.INPUT_ELEM, component);
+        writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_HIDDEN, null);
+        writer.writeAttribute(HTML.NAME_ATTR, component.getClientId(facesContext) +
+                                              HIDDEN_SUBMIT_INPUT_SUFFIX, null);
+        writer.writeAttribute(HTML.VALUE_ATTR, HIDDEN_SUBMIT_INPUT_VALUE, null);
+        writer.endElement(HTML.INPUT_ELEM);
+
+        renderScrollHiddenInputIfNecessary(component, facesContext, writer);
+
+        //write state marker at the end of the form
+        //Todo: this breaks client-side enabled AJAX components again which are searching for the state
+        //we'll need to fix this
+        ViewHandler viewHandler = facesContext.getApplication().getViewHandler();
+        viewHandler.writeState(facesContext);
+
+        afterFormElementsEnd(facesContext, component);
+        
+        List<UIComponent> componentResources = facesContext.getViewRoot().getComponentResources(facesContext,
+            FORM_TARGET);
+        
+        for (int i = 0, size = componentResources.size(); i < size; i++)
+        {
+           UIComponent child = componentResources.get(i);
+           child.encodeAll (facesContext);
+        }
+        
+        writer.endElement(HTML.FORM_ELEM);
+    }
+
+    private static String getHiddenCommandInputsSetName(FacesContext facesContext, UIComponent form) {
+        StringBuffer buf = new StringBuffer();
+        buf.append(HIDDEN_COMMAND_INPUTS_SET_ATTR);
+        buf.append("_");
+        buf.append(form.getClientId(facesContext));
+        return buf.toString();
+    }
+
+    private static String getScrollHiddenInputName(FacesContext facesContext, UIComponent form) {
+        StringBuffer buf = new StringBuffer();
+        buf.append(SCROLL_HIDDEN_INPUT);
+        buf.append("_");
+        buf.append(form.getClientId(facesContext));
+        return buf.toString();
+    }
+
+
+    public void decode(FacesContext facesContext, UIComponent component)
+    {
+        org.apache.myfaces.shared.renderkit.RendererUtils.checkParamValidity(facesContext, component, UIForm.class);
+
+        /*
+        if (HTMLUtil.isDisabled(component))
+        {
+            return;
+        }
+        */
+
+        UIForm htmlForm = (UIForm)component;
+
+        Map paramMap = facesContext.getExternalContext().getRequestParameterMap();
+        String submittedValue = (String)paramMap.get(component.getClientId(facesContext) +
+                                                     HIDDEN_SUBMIT_INPUT_SUFFIX);
+        if (submittedValue != null && submittedValue.equals(HIDDEN_SUBMIT_INPUT_VALUE))
+        {
+            htmlForm.setSubmitted(true);
+        }
+        else
+        {
+            htmlForm.setSubmitted(false);
+        }
+        
+        HtmlRendererUtils.decodeClientBehaviors(facesContext, component);
+    }
+
+
+    public static void addHiddenCommandParameter(FacesContext facesContext, UIComponent form, String paramName)
+    {
+        Set set = (Set) facesContext.getExternalContext().getRequestMap().get(getHiddenCommandInputsSetName(facesContext, form));
+        if (set == null)
+        {
+            set = new HashSet();
+            facesContext.getExternalContext().getRequestMap().put(getHiddenCommandInputsSetName(facesContext, form), set);
+        }
+        set.add(paramName);
+    }
+
+    public static void renderScrollHiddenInputIfNecessary(UIComponent form, FacesContext facesContext, ResponseWriter writer)
+        throws IOException {
+        if (form == null) {
+            return;
+        }
+
+        if (facesContext.getExternalContext().getRequestMap().get(getScrollHiddenInputName(facesContext, form)) == null)
+        {
+            if (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isAutoScroll()) {
+                HtmlRendererUtils.renderAutoScrollHiddenInput(facesContext, writer);
+            }
+            facesContext.getExternalContext().getRequestMap().put(getScrollHiddenInputName(facesContext, form), Boolean.TRUE);
+        }
+    }
+
+    private String getAcceptCharset(UIComponent uiComponent)
+    {
+        if (uiComponent instanceof HtmlForm)
+        {
+            return ((HtmlForm)uiComponent).getAcceptcharset();
+        }
+        return (String)uiComponent.getAttributes().get(JSFAttr.ACCEPTCHARSET_ATTR);
+    }
+
+    /**
+     * Called before the state and any elements are added to the form tag in the
+     * encodeBegin method
+     */
+    protected void beforeFormElementsStart(FacesContext facesContext, UIComponent component)
+            throws IOException
+    {}
+
+    /**
+     * Called after the state and any elements are added to the form tag in the
+     * encodeBegin method
+     */
+    protected void afterFormElementsStart(FacesContext facesContext, UIComponent component)
+            throws IOException
+    {}
+
+    /**
+     * Called before the state and any elements are added to the form tag in the
+     * encodeEnd method
+     */
+    protected void beforeFormElementsEnd(FacesContext facesContext, UIComponent component)
+            throws IOException
+    {}
+
+    /**
+     * Called after the state and any elements are added to the form tag in the
+     * encodeEnd method
+     */
+    protected void afterFormElementsEnd(FacesContext facesContext, UIComponent component)
+            throws IOException
+    {}
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java
new file mode 100644
index 0000000..a206972
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java
@@ -0,0 +1,359 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit.html;
+
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.application.ProjectStage;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIPanel;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.faces.component.html.HtmlPanelGrid;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.util.ArrayUtils;
+import org.apache.myfaces.shared.util.StringUtils;
+
+
+/**
+ * @author Martin Marinschek
+ * @version $Revision$ $Date$
+ *          <p/>
+ *          $Log: $
+ */
+public class HtmlGridRendererBase
+        extends HtmlRenderer
+{
+    //private static final Log log = LogFactory.getLog(HtmlGridRendererBase.class);
+    private static final Logger log = Logger.getLogger(HtmlGridRendererBase.class.getName());
+    
+    private static final Integer[] ZERO_INT_ARRAY = new Integer[]{0};
+
+    public boolean getRendersChildren()
+    {
+        return true;
+    }
+
+    @Override
+    public void decode(FacesContext context, UIComponent component)
+    {
+        // Check for npe
+        super.decode(context, component);
+        
+        HtmlRendererUtils.decodeClientBehaviors(context, component);
+    }
+
+    public void encodeBegin(FacesContext facesContext, UIComponent component)
+            throws IOException
+    {
+        // all work done in encodeEnd()
+    }
+
+    public void encodeChildren(FacesContext context, UIComponent component)
+        throws IOException
+    {
+        // all work done in encodeEnd()
+    }
+
+    public void encodeEnd(FacesContext facesContext, UIComponent component)
+            throws IOException
+    {
+        RendererUtils.checkParamValidity(facesContext, component, UIPanel.class);
+
+        int columns;
+        if (component instanceof HtmlPanelGrid)
+        {
+            columns = ((HtmlPanelGrid)component).getColumns();
+        }
+        else
+        {
+            Integer i = (Integer)component.getAttributes().get(org.apache.myfaces.shared.renderkit.JSFAttr.COLUMNS_ATTR);
+            columns = i != null ? i.intValue() : 0;
+        }
+
+        if (columns <= 0)
+        {
+            if (log.isLoggable(Level.SEVERE))
+            {
+                log.severe("Wrong columns attribute for PanelGrid " + component.getClientId(facesContext) + ": " + columns);
+            }
+            columns = 1;
+        }
+
+        ResponseWriter writer = facesContext.getResponseWriter();
+        Map<String, List<ClientBehavior>> behaviors = null;
+        if (component instanceof ClientBehaviorHolder)
+        {
+            behaviors = ((ClientBehaviorHolder) component).getClientBehaviors();
+        }
+
+        if (behaviors != null && !behaviors.isEmpty())
+        {
+            ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, writer);
+        }
+        
+        writer.startElement(HTML.TABLE_ELEM, component);
+        
+        if (component instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
+        {
+            if (!behaviors.isEmpty())
+            {
+                HtmlRendererUtils.writeIdAndName(writer, component, facesContext);
+            }
+            else
+            {
+                HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+            }
+            HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, component, behaviors);
+            HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.TABLE_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
+        }
+        else
+        {
+            HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+            HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.TABLE_PASSTHROUGH_ATTRIBUTES);
+        }
+
+        writer.flush();
+
+        HtmlRendererUtils.renderTableCaption(facesContext, writer, component);
+
+        // theader and tfooter are rendered before the tbody
+        renderHeaderOrFooter(facesContext, writer, component, columns, true);   //Header facet
+        renderHeaderOrFooter(facesContext, writer, component, columns, false);  //Footer facet
+        
+        renderChildren(facesContext, writer, component, columns);
+
+        writer.endElement(HTML.TABLE_ELEM);
+    }
+
+    
+
+    protected void renderHeaderOrFooter(FacesContext context,
+                                      ResponseWriter writer,
+                                      UIComponent component,
+                                      int columns,
+                                      boolean header)
+        throws IOException
+    {
+        UIComponent facet = component.getFacet(header ? "header" : "footer");
+        if (facet == null) return;
+
+        HtmlRendererUtils.writePrettyLineSeparator(context);
+        writer.startElement(header ? org.apache.myfaces.shared.renderkit.html.HTML.THEAD_ELEM : HTML.TFOOT_ELEM, component);
+        writer.startElement(HTML.TR_ELEM, component);
+        writer.startElement(header ? HTML.TH_ELEM : HTML.TD_ELEM, component);
+
+        String styleClass = (component instanceof HtmlPanelGrid)
+            ? (header ?
+                         ((HtmlPanelGrid)component).getHeaderClass() :
+                         ((HtmlPanelGrid)component).getFooterClass())
+            : (header ?
+                         (String)component.getAttributes().get(JSFAttr.HEADER_CLASS_ATTR) :
+                         (String)component.getAttributes().get(org.apache.myfaces.shared.renderkit.JSFAttr.FOOTER_CLASS_ATTR));
+        if (styleClass != null)
+        {
+            writer.writeAttribute(HTML.CLASS_ATTR, styleClass,
+                                  header ? JSFAttr.HEADER_CLASS_ATTR : org.apache.myfaces.shared.renderkit.JSFAttr.FOOTER_CLASS_ATTR);
+        }
+
+        if (header)
+        {
+            writer.writeAttribute(HTML.SCOPE_ATTR, HTML.SCOPE_COLGROUP_VALUE, null);
+        }
+
+        writer.writeAttribute(HTML.COLSPAN_ATTR, Integer.toString(columns), null);
+
+        HtmlRendererUtils.writePrettyLineSeparator(context);
+        RendererUtils.renderChild(context, facet);
+
+        HtmlRendererUtils.writePrettyLineSeparator(context);
+        writer.endElement(header ? HTML.TH_ELEM : HTML.TD_ELEM);
+        writer.endElement(HTML.TR_ELEM);
+        writer.endElement(header ? HTML.THEAD_ELEM : HTML.TFOOT_ELEM);
+    }
+
+    protected int childAttributes(FacesContext context,
+            ResponseWriter writer,
+            UIComponent component,
+            int columnIndex)
+        throws IOException
+    {
+        // subclasses can override this method to add attributes to the table cell <td> tag
+        return columnIndex;
+    }
+
+    protected void renderChildren(FacesContext context,
+                                ResponseWriter writer,
+                                UIComponent component,
+                                int columns)
+        throws IOException
+    {
+        String columnClasses;
+        String rowClasses;
+        if (component instanceof HtmlPanelGrid)
+        {
+            columnClasses = ((HtmlPanelGrid)component).getColumnClasses();
+            rowClasses =  ((HtmlPanelGrid)component).getRowClasses();
+        }
+        else
+        {
+            columnClasses = (String)component.getAttributes().get(org.apache.myfaces.shared.renderkit.JSFAttr.COLUMN_CLASSES_ATTR);
+            rowClasses = (String)component.getAttributes().get(JSFAttr.ROW_CLASSES_ATTR);
+        }
+
+        String[] columnClassesArray = (columnClasses == null)
+            ? ArrayUtils.EMPTY_STRING_ARRAY
+            : StringUtils.trim(StringUtils.splitShortString(columnClasses, ','));
+        int columnClassesCount = columnClassesArray.length;
+
+        String[] rowClassesArray = (rowClasses == null)
+            ? org.apache.myfaces.shared.util.ArrayUtils.EMPTY_STRING_ARRAY
+            : StringUtils.trim(StringUtils.splitShortString(rowClasses, ','));
+        int rowClassesCount = rowClassesArray.length;
+
+        int childCount = getChildCount(component);
+        if (childCount > 0)
+        {
+            // get the row indizes for which a new TBODY element should be created
+            Integer[] bodyrows = null;
+            String bodyrowsAttr = (String) component.getAttributes().get(JSFAttr.BODYROWS_ATTR);
+            if(bodyrowsAttr != null && !"".equals(bodyrowsAttr)) 
+            {   
+                String[] bodyrowsString = StringUtils.trim(StringUtils.splitShortString(bodyrowsAttr, ','));
+                // parsing with no exception handling, because of JSF-spec: 
+                // "If present, this must be a comma separated list of integers."
+                bodyrows = new Integer[bodyrowsString.length];
+                for(int i = 0; i < bodyrowsString.length; i++) 
+                {
+                    bodyrows[i] = new Integer(bodyrowsString[i]);
+                }
+                
+            }
+            else
+            {
+                bodyrows = ZERO_INT_ARRAY;
+            }
+            int bodyrowsCount = 0;
+            int rowIndex = -1;
+            int columnIndex = 0;
+            int rowClassIndex = 0;
+            boolean rowStarted = false;
+            for (Iterator it = getChildren(component).iterator(); it.hasNext(); )
+            {
+                UIComponent child = (UIComponent)it.next();
+                if (child.isRendered())
+                {
+                    if (columnIndex == 0)
+                    {
+                        rowIndex++;
+                        
+                        if (rowStarted)
+                        {
+                            //do we have to close the last row?
+                            writer.endElement(HTML.TR_ELEM);
+                            HtmlRendererUtils.writePrettyLineSeparator(context);
+                        }
+                        
+                        // is the current row listed in the bodyrows attribute
+                        if(ArrayUtils.contains(bodyrows, rowIndex)) 
+                        {
+                            // close any preopened TBODY element first
+                            if(bodyrowsCount != 0) 
+                            {
+                                writer.endElement(HTML.TBODY_ELEM);
+                                HtmlRendererUtils.writePrettyLineSeparator(context);
+                            }
+                            writer.startElement(HTML.TBODY_ELEM, component); 
+                            HtmlRendererUtils.writePrettyLineSeparator(context);
+                            bodyrowsCount++;
+                        }
+                        
+                        //start of new/next row
+                        writer.startElement(HTML.TR_ELEM, component);
+                        if (rowClassIndex < rowClassesCount) {
+                            writer.writeAttribute(HTML.CLASS_ATTR, rowClassesArray[rowClassIndex], null);
+                        }
+                        rowStarted = true;
+                        rowClassIndex++;
+                        if (rowClassIndex == rowClassesCount) {
+                            rowClassIndex = 0;
+                        }
+                    }
+
+                    writer.startElement(HTML.TD_ELEM, component);
+                    if (columnIndex < columnClassesCount)
+                    {
+                        writer.writeAttribute(HTML.CLASS_ATTR, columnClassesArray[columnIndex], null);
+                    }
+                    columnIndex = childAttributes(context, writer, child, columnIndex);
+                    RendererUtils.renderChild(context, child);
+                    writer.endElement(HTML.TD_ELEM);
+
+                    columnIndex++;
+                    if (columnIndex >= columns) {
+                        columnIndex = 0;
+                    }
+                }
+            }
+
+            if (rowStarted)
+            {
+                if (columnIndex > 0)
+                {
+                    Level level = context.isProjectStage(ProjectStage.Production) ? Level.FINE : Level.WARNING;
+                    if (log.isLoggable(level))
+                    {
+                        log.log(level, "PanelGrid " + RendererUtils.getPathToComponent(component) + " has not enough children. Child count should be a multiple of the columns attribute.");
+                    }
+                    //Render empty columns, so that table is correct
+                    for ( ; columnIndex < columns; columnIndex++)
+                    {
+                        writer.startElement(HTML.TD_ELEM, component);
+                        if (columnIndex < columnClassesCount)
+                        {
+                            writer.writeAttribute(HTML.CLASS_ATTR, columnClassesArray[columnIndex], null);
+                        }
+                        writer.endElement(HTML.TD_ELEM);
+                    }
+                }
+                writer.endElement(HTML.TR_ELEM);
+                HtmlRendererUtils.writePrettyLineSeparator(context);
+                
+                // close any preopened TBODY element first
+                if(bodyrowsCount != 0) 
+                {
+                    writer.endElement(HTML.TBODY_ELEM);
+                    HtmlRendererUtils.writePrettyLineSeparator(context);
+                }
+            }
+        }
+    }
+
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGroupRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGroupRendererBase.java
new file mode 100644
index 0000000..b091af7
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGroupRendererBase.java
@@ -0,0 +1,99 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit.html;
+
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIViewRoot;
+import javax.faces.component.html.HtmlPanelGroup;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import java.io.IOException;
+
+/**
+ * @author Martin Marinschek
+ * @version $Revision: $ $Date: $
+ *          <p/>
+ *          $Log: $
+ */
+public class HtmlGroupRendererBase
+        extends HtmlRenderer 
+{
+    private static final String LAYOUT_BLOCK_VALUE = "block";
+
+    public boolean getRendersChildren()
+    {
+        return true;
+    }
+
+    public void encodeBegin(FacesContext context, UIComponent component)
+            throws IOException
+    {
+    }
+
+    public void encodeChildren(FacesContext context, UIComponent component)
+        throws IOException
+    {
+    }
+
+    public void encodeEnd(FacesContext context, UIComponent component)
+            throws IOException
+    {
+        ResponseWriter writer = context.getResponseWriter();
+        boolean span = false;
+
+        // will be SPAN or DIV, depending on the layout attribute value
+        String layoutElement = HTML.SPAN_ELEM;
+
+        HtmlPanelGroup panelGroup = (HtmlPanelGroup) component;
+
+        // if layout is 'block', render DIV instead SPAN
+        String layout = panelGroup.getLayout();
+        if (layout != null && layout.equals(LAYOUT_BLOCK_VALUE))
+        {
+            layoutElement = HTML.DIV_ELEM;
+        }
+
+        if(component.getId()!=null && !component.getId().startsWith(UIViewRoot.UNIQUE_ID_PREFIX))
+        {
+            span = true;
+
+            writer.startElement(layoutElement, component);
+
+            HtmlRendererUtils.writeIdIfNecessary(writer, component, context);
+
+            HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.COMMON_PASSTROUGH_ATTRIBUTES);
+        }
+        else
+        {
+            span=HtmlRendererUtils.renderHTMLAttributesWithOptionalStartElement(writer,
+                                                                             component,
+                                                                             layoutElement,
+                                                                             HTML.COMMON_PASSTROUGH_ATTRIBUTES);
+        }
+
+        RendererUtils.renderChildren(context, component);
+        if (span)
+        {
+            writer.endElement(layoutElement);
+        }
+    }
+
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java
new file mode 100644
index 0000000..9d7fa91
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java
@@ -0,0 +1,129 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit.html;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.application.ProjectStage;
+import javax.faces.application.Resource;
+import javax.faces.application.ResourceHandler;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIGraphic;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.faces.component.html.HtmlGraphicImage;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
+
+
+/**
+ * @author Manfred Geiler (latest modification by $Author: grantsmith $)
+ * @author Thomas Spiegl
+ * @author Anton Koinov
+ * @version $Revision$ $Date: 2005-05-11 18:45:06 +0200 (Wed, 11 May 2005) $
+ */
+public class HtmlImageRendererBase
+        extends HtmlRenderer
+{
+    //private static final Log log = LogFactory.getLog(HtmlImageRendererBase.class);
+    private static final Logger log = Logger.getLogger(HtmlImageRendererBase.class.getName());
+    
+    public void decode(FacesContext context, UIComponent component)
+    {
+        //check for npe
+        super.decode(context, component);
+        
+        HtmlRendererUtils.decodeClientBehaviors(context, component);
+    }
+
+    public void encodeEnd(FacesContext facesContext, UIComponent uiComponent)
+            throws IOException
+    {
+        org.apache.myfaces.shared.renderkit.RendererUtils.checkParamValidity(facesContext, uiComponent, UIGraphic.class);
+
+        ResponseWriter writer = facesContext.getResponseWriter();
+        
+        Map<String, List<ClientBehavior>> behaviors = null;
+        if (uiComponent instanceof ClientBehaviorHolder)
+        {
+            behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
+            if (!behaviors.isEmpty())
+            {
+                ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, writer);
+            }
+        }
+        
+        writer.startElement(HTML.IMG_ELEM, uiComponent);
+
+        if (uiComponent instanceof ClientBehaviorHolder 
+                && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext())
+                && !behaviors.isEmpty())
+        {
+            HtmlRendererUtils.writeIdAndName(writer, uiComponent, facesContext);
+        }
+        else
+        {
+            HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
+        }
+
+        final String url = RendererUtils.getIconSrc(facesContext, uiComponent, JSFAttr.URL_ATTR);
+        if (url != null)
+        {
+            writer.writeURIAttribute(HTML.SRC_ATTR, url,JSFAttr.VALUE_ATTR);
+        }
+        else
+        {
+          if (log.isLoggable(Level.WARNING)) log.warning("Graphic with id " + uiComponent.getClientId(facesContext) + " has no value (url or name).");
+        }
+
+        /* 
+         * Warn the user if the ALT attribute is missing.
+         */                
+        if (uiComponent.getAttributes().get(HTML.ALT_ATTR) == null) 
+        {
+            //we don't want to flood logs with warnings in production and system test environments
+            ProjectStage projectStage = facesContext.getApplication().getProjectStage();
+            if(projectStage.equals(ProjectStage.Development) || projectStage.equals(ProjectStage.UnitTest))
+                log.warning("ALT attribute is missing for : " + uiComponent.getId());
+        }
+
+        if (uiComponent instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
+        {
+            HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, uiComponent, behaviors);
+            HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.IMG_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
+        }
+        else
+        {
+            HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.IMG_PASSTHROUGH_ATTRIBUTES);
+        }
+
+        writer.endElement(org.apache.myfaces.shared.renderkit.html.HTML.IMG_ELEM);
+
+    }
+
+}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
new file mode 100644
index 0000000..9787133
--- /dev/null
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
@@ -0,0 +1,963 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.apache.myfaces.shared.renderkit.html;
+
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import javax.faces.application.ViewHandler;
+import javax.faces.component.UICommand;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutcomeTarget;
+import javax.faces.component.UIOutput;
+import javax.faces.component.UIParameter;
+import javax.faces.component.behavior.ClientBehavior;
+import javax.faces.component.behavior.ClientBehaviorContext;
+import javax.faces.component.behavior.ClientBehaviorHint;
+import javax.faces.component.behavior.ClientBehaviorHolder;
+import javax.faces.component.html.HtmlCommandLink;
+import javax.faces.component.html.HtmlOutputLink;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+import javax.faces.event.ActionEvent;
+
+import org.apache.myfaces.shared.config.MyfacesConfig;
+import org.apache.myfaces.shared.renderkit.ClientBehaviorEvents;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.renderkit.html.util.FormInfo;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.util._ComponentUtils;
+
+/**
+ * @author Manfred Geiler
+ * @version $Revision$ $Date$
+ */
+public abstract class HtmlLinkRendererBase
+    extends HtmlRenderer
+{
+    /* this one is never used
+    public static final String URL_STATE_MARKER      = "JSF_URL_STATE_MARKER=DUMMY";
+    public static final int    URL_STATE_MARKER_LEN  = URL_STATE_MARKER.length();
+    */
+
+    //private static final Log log = LogFactory.getLog(HtmlLinkRenderer.class);
+    
+    public static final String END_LINK_OUTCOME_AS_SPAN = "org.apache.myfaces.shared.HtmlLinkRendererBase.END_LINK_OUTCOME_AS_SPAN";
+
+    public boolean getRendersChildren()
+    {
+        // We must be able to render the children without a surrounding anchor
+        // if the Link is disabled
+        return true;
+    }
+
+    public void decode(FacesContext facesContext, UIComponent component)
+    {
+        super.decode(facesContext, component);  //check for NP
+
+        if (component instanceof UICommand)
+        {
+            String clientId = component.getClientId(facesContext);
+            FormInfo formInfo = findNestingForm(component, facesContext);
+            if (formInfo != null)
+            {
+                String reqValue = (String) facesContext.getExternalContext().getRequestParameterMap().get(
+                        HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo));
+                if (reqValue != null && reqValue.equals(clientId)
+                    || HtmlRendererUtils.isPartialOrBehaviorSubmit(facesContext, clientId)) {
+                    component.queueEvent(new ActionEvent(component));
+
+                    RendererUtils.initPartialValidationAndModelUpdate(component, facesContext);
+                }
+            }
+            if (component instanceof ClientBehaviorHolder &&
+                    !HtmlRendererUtils.isDisabled(component))
+            {
+                HtmlRendererUtils.decodeClientBehaviors(facesContext, component);
+            }
+        }
+        else if (component instanceof UIOutput)
+        {
+            //do nothing
+            if (component instanceof ClientBehaviorHolder &&
+                    !HtmlRendererUtils.isDisabled(component))
+            {
+                HtmlRendererUtils.decodeClientBehaviors(facesContext, component);
+            }
+        }
+        else
+        {
+            throw new IllegalArgumentException("Unsupported component class " + component.getClass().getName());
+        }
+    }
+
+
+    public void encodeBegin(FacesContext facesContext, UIComponent component) throws IOException
+    {
+        super.encodeBegin(facesContext, component);  //check for NP
+
+        Map<String, List<ClientBehavior>> behaviors = null;
+        if (component instanceof ClientBehaviorHolder)
+        {
+            behaviors = ((ClientBehaviorHolder) component).getClientBehaviors();
+            if (!behaviors.isEmpty())
+            {
+                ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, facesContext.getResponseWriter());
+            }
+        }
+        
+        if (component instanceof UICommand)
+        {
+            renderCommandLinkStart(facesContext, component,
+                                   component.getClientId(facesContext),
+                                   ((UICommand)component).getValue(),
+                                   getStyle(facesContext, component),
+                                   getStyleClass(facesContext, component));
+        }
+        else if (component instanceof UIOutcomeTarget)
+        {
+            renderOutcomeLinkStart(facesContext, (UIOutcomeTarget)component);
+        }        
+        else if (component instanceof UIOutput)
+        {
+            renderOutputLinkStart(facesContext, (UIOutput)component);
+        }
+        else
+        {
+            throw new IllegalArgumentException("Unsupported component class " + component.getClass().getName());
+        }
+    }
+
+
+    /**
+     * Can be overwritten by derived classes to overrule the style to be used.
+     */
+    protected String getStyle(FacesContext facesContext, UIComponent link)
+    {
+        if (link instanceof HtmlCommandLink)
+        {
+            return ((HtmlCommandLink)link).getStyle();
+        }
+
+        return (String)link.getAttributes().get(HTML.STYLE_ATTR);
+
+    }
+
+    /**
+     * Can be overwritten by derived classes to overrule the style class to be used.
+     */
+    protected String getStyleClass(FacesContext facesContext, UIComponent link)
+    {
+        if (link instanceof HtmlCommandLink)
+        {
+            return ((HtmlCommandLink)link).getStyleClass();
+        }
+
+        return (String)link.getAttributes().get(HTML.STYLE_CLASS_ATTR);
+
+    }
+
+    public void encodeChildren(FacesContext facesContext, UIComponent component) throws IOException
+    {
+        RendererUtils.renderChildren(facesContext, component);
+    }
+
+    public void encodeEnd(FacesContext facesContext, UIComponent component) throws IOException
+    {
+        super.encodeEnd(facesContext, component);  //check for NP
+
+        if (component instanceof UICommand)
+        {
+            renderCommandLinkEnd(facesContext, component);
+
+            FormInfo formInfo = findNestingForm(component, facesContext);
+            
+            if (formInfo != null)
+            {
+                HtmlFormRendererBase.renderScrollHiddenInputIfNecessary(
+                        formInfo.getForm(), facesContext, facesContext.getResponseWriter());
+            }
+        }
+        else if (component instanceof UIOutcomeTarget)
+        {
+            renderOutcomeLinkEnd(facesContext, component);
+        }
+        else if (component instanceof UIOutput)
+        {
+            renderOutputLinkEnd(facesContext, component);
+        }
+        else
+        {
+            throw new IllegalArgumentException("Unsupported component class " + component.getClass().getName());
+        }
+    }
+
+    protected void renderCommandLinkStart(FacesContext facesContext, UIComponent component,
+                                          String clientId,
+                                          Object value,
+                                          String style,
+                                          String styleClass)
+            throws IOException
+    {
+        ResponseWriter writer = facesContext.getResponseWriter();
+        Map<String, List<ClientBehavior>> behaviors = null;
+
+        // h:commandLink can be rendered outside a form, but with warning (jsf 2.0 TCK)
+        FormInfo formInfo = findNestingForm(component, facesContext);
+        
+        if (HtmlRendererUtils.isDisabled(component) || formInfo == null)
+        {
+            writer.startElement(HTML.SPAN_ELEM, component);
+            if (component instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
+            {
+                behaviors = ((ClientBehaviorHolder) component).getClientBehaviors();
+                if (!behaviors.isEmpty())
+                {
+                    HtmlRendererUtils.writeIdAndName(writer, component, facesContext);
+                }
+                else
+                {
+                    HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+                }
+                HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, component, behaviors);
+                HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchangeAndOnselect(facesContext, writer, component, behaviors);
+                HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
+            }
+            else
+            {
+                HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+                HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES);
+            }
+        }
+        else
+        {
+            String[] anchorAttrsToRender;
+            if (JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
+            {
+                if (component instanceof ClientBehaviorHolder)
+                {
+                    behaviors = ((ClientBehaviorHolder) component).getClientBehaviors();
+                    renderBehaviorizedJavaScriptAnchorStart(facesContext, writer, component, clientId, behaviors, formInfo);
+                    if (!behaviors.isEmpty())
+                    {
+                        HtmlRendererUtils.writeIdAndName(writer, component, facesContext);
+                    }
+                    else
+                    {
+                        HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+                    }
+                    HtmlRendererUtils.renderBehaviorizedEventHandlersWithoutOnclick(facesContext, writer, component, behaviors);
+                    HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchangeAndOnselect(facesContext, writer, component, behaviors);
+                    anchorAttrsToRender = HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_STYLE_AND_EVENTS;
+                }
+                else
+                {
+                    renderJavaScriptAnchorStart(facesContext, writer, component, clientId, formInfo);
+                    HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+                    anchorAttrsToRender = HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_ONCLICK_WITHOUT_STYLE;
+                }
+            }
+            else
+            {
+                renderNonJavaScriptAnchorStart(facesContext, writer, component, clientId, formInfo);
+                HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+                anchorAttrsToRender = HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_STYLE;
+            }
+
+            HtmlRendererUtils.renderHTMLAttributes(writer, component,
+                                                   anchorAttrsToRender);
+            HtmlRendererUtils.renderHTMLAttribute(writer, HTML.STYLE_ATTR, HTML.STYLE_ATTR,
+                                                  style);
+            HtmlRendererUtils.renderHTMLAttribute(writer, HTML.STYLE_CLASS_ATTR, HTML.STYLE_CLASS_ATTR,
+                                                  styleClass);
+        }
+
+        // render value as required by JSF 1.1 renderkitdocs
+        if(value != null)
+        {
+            writer.writeText(value.toString(), JSFAttr.VALUE_ATTR);
+        }
+        
+        // render warning message for a h:commandLink with no nesting form
+        if (formInfo == null)
+        {
+            writer.writeText(": This link is deactivated, because it is not embedded in a JSF form.", null);
+        }
+    }
+
+    protected void renderJavaScriptAnchorStart(FacesContext facesContext,
+                                               ResponseWriter writer,
+                                               UIComponent component,
+                                               String clientId,
+                                               FormInfo formInfo)
+        throws IOException
+    {
+        UIComponent nestingForm = formInfo.getForm();
+        String formName = formInfo.getFormName();
+
+        StringBuffer onClick = new StringBuffer();
+
+        String commandOnclick;
+        if (component instanceof HtmlCommandLink)
+        {
+            commandOnclick = ((HtmlCommandLink)component).getOnclick();
+        }
+        else
+        {
+            commandOnclick = (String)component.getAttributes().get(HTML.ONCLICK_ATTR);
+        }
+        if (commandOnclick != null)
+        {
+            onClick.append("var cf = function(){");
+            onClick.append(commandOnclick);
+            onClick.append('}');
+            onClick.append(';');
+            onClick.append("var oamSF = function(){");
+        }
+
+        if (RendererUtils.isAdfOrTrinidadForm(formInfo.getForm())) {
+            onClick.append("submitForm('");
+            onClick.append(formInfo.getForm().getClientId(facesContext));
+            onClick.append("',1,{source:'");
+            onClick.append(component.getClientId(facesContext));
+            onClick.append("'});return false;");
+        }
+        else {
+            HtmlRendererUtils.renderFormSubmitScript(facesContext);
+
+            StringBuffer params = addChildParameters(facesContext, component, nestingForm);
+
+            String target = getTarget(component);
+
+            if (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isRenderFormSubmitScriptInline())
+            {
+                onClick.append("return ").
+                    append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME).append("('").
+                    append(formName).append("','").
+                    append(clientId).append("'");
+            }
+            else
+            {
+                onClick.append("return ").
+                    append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME_JSF2).append("('").
+                    append(formName).append("','").
+                    append(clientId).append("'");
+            }
+
+            if (params.length() > 2 || target != null) {
+                onClick.append(",").
+                    append(target == null ? "null" : ("'" + target + "'")).append(",").
+                    append(params);
+            }
+            onClick.append(");");
+
+            //Not necessary since we are using oamSetHiddenInput to create input hidden fields
+            //render hidden field - todo: in here for backwards compatibility
+            if (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isRenderHiddenFieldsForLinkParams())
+            {
+                String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo);
+                addHiddenCommandParameter(facesContext, nestingForm, hiddenFieldName);
+            }
+
+        }
+        
+        if (commandOnclick != null)
+        {
+            onClick.append('}');
+            onClick.append(';');
+            onClick.append("return (cf.apply(this, [])==false)? false : oamSF.apply(this, []); ");
+        }        
+
+        writer.startElement(HTML.ANCHOR_ELEM, component);
+        writer.writeURIAttribute(HTML.HREF_ATTR, "#", null);
+        writer.writeAttribute(HTML.ONCLICK_ATTR, onClick.toString(), null);
+    }
+
+    
+    protected void renderBehaviorizedJavaScriptAnchorStart(FacesContext facesContext,
+            ResponseWriter writer,
+            UIComponent component,
+            String clientId,
+            Map<String, List<ClientBehavior>> behaviors,
+            FormInfo formInfo)
+    throws IOException
+    {
+        String commandOnclick;
+        if (component instanceof HtmlCommandLink)
+        {
+            commandOnclick = ((HtmlCommandLink)component).getOnclick();
+        }
+        else
+        {
+            commandOnclick = (String)component.getAttributes().get(HTML.ONCLICK_ATTR);
+        }
+
+        //Calculate the script necessary to submit form
+        String serverEventCode = buildServerOnclick(facesContext, component, clientId, formInfo);
+        
+        String onclick = null;
+        
+        if (commandOnclick == null && (behaviors.isEmpty() || 
+            (!behaviors.containsKey(ClientBehaviorEvents.CLICK) && 
+             !behaviors.containsKey(ClientBehaviorEvents.ACTION) ) ) )
+        {
+            //we need to render only the submit script
+            onclick = serverEventCode;
+        }
+        else
+        {
+            boolean hasSubmittingBehavior = hasSubmittingBehavior(behaviors, ClientBehaviorEvents.CLICK)
+                || hasSubmittingBehavior(behaviors, ClientBehaviorEvents.ACTION);
+            if (!hasSubmittingBehavior)
+            {
+                //Ensure required resource javascript is available
+                ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext, writer);
+            }
+            
+            //render a javascript that chain the related code
+            Collection<ClientBehaviorContext.Parameter> paramList = HtmlRendererUtils.getClientBehaviorContextParameters(
+                    HtmlRendererUtils.mapAttachedParamsToStringValues(facesContext, component));
+            
+            onclick = HtmlRendererUtils.buildBehaviorChain(facesContext, component,
+                    ClientBehaviorEvents.CLICK, paramList, ClientBehaviorEvents.ACTION, paramList, behaviors,
+                    commandOnclick , hasSubmittingBehavior ? null : serverEventCode);
+        }
+        
+        writer.startElement(HTML.ANCHOR_ELEM, component);
+        writer.writeURIAttribute(HTML.HREF_ATTR, "#", null);
+        writer.writeAttribute(HTML.ONCLICK_ATTR, onclick, null);
+    }
+
+    private boolean hasSubmittingBehavior(Map<String, List<ClientBehavior>> clientBehaviors, String eventName)
+    {
+        List<ClientBehavior> eventBehaviors = clientBehaviors.get(eventName);
+        if (eventBehaviors != null && !eventBehaviors.isEmpty()) {
+            for (ClientBehavior behavior : eventBehaviors) {
+                if (behavior.getHints().contains(ClientBehaviorHint.SUBMITTING)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    protected String buildServerOnclick(FacesContext facesContext, UIComponent component, 
+            String clientId, FormInfo formInfo) throws IOException
+    {
+        UIComponent nestingForm = formInfo.getForm();
+        String formName = formInfo.getFormName();
+
+        StringBuffer onClick = new StringBuffer();
+
+        if (RendererUtils.isAdfOrTrinidadForm(formInfo.getForm())) {
+            onClick.append("submitForm('");
+            onClick.append(formInfo.getForm().getClientId(facesContext));
+            onClick.append("',1,{source:'");
+            onClick.append(component.getClientId(facesContext));
+            onClick.append("'});return false;");
+        }
+        else {
+            HtmlRendererUtils.renderFormSubmitScript(facesContext);
+
+            StringBuffer params = addChildParameters(facesContext, component, nestingForm);
+
+            String target = getTarget(component);
+
+            if (MyfacesConfig.getCurrentInstance(facesContext.getExternalContext()).isRenderFormSubmitScriptInline())
+            {
+                onClick.append("return ").
+                    append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME).append("('").
+                    append(formName).append("','").
+                    append(clientId).append("'");
+            }
+            else
+            {
+                onClick.append("return ").
+                    append(HtmlRendererUtils.SUBMIT_FORM_FN_NAME_JSF2).append("('").
+                    append(formName).append("','").
+                    append(clientId).append("'");
+            }
+
+            if (params.length() > 2 || target != null) {
+                onClick.append(",").
+                    append(target == null ? "null" : ("'" + target + "'")).append(",").
+                    append(params);
+            }
+            onClick.append(");");
+
+            //Not necessary since we are using oamSetHiddenInput to create input hidden fields
+            //render hidden field - todo: in here for backwards compatibility
+            //String hiddenFieldName = HtmlRendererUtils.getHiddenCommandLinkFieldName(formInfo);
+            //addHiddenCommandParameter(facesContext, nestingForm, hiddenFieldName);
+
+        }
+        return onClick.toString();
+    }
+
+    private String getTarget(UIComponent component) {
+        // for performance reason: double check for the target attribute
+        String target;
+        if (component instanceof HtmlCommandLink) {
+            target = ((HtmlCommandLink) component).getTarget();
+        }
+        else {
+            target = (String) component.getAttributes().get(HTML.TARGET_ATTR);
+        }
+        return target;
+    }
+
+    private StringBuffer addChildParameters(FacesContext context, UIComponent component, UIComponent nestingForm) {
+        //add child parameters
+        StringBuffer params = new StringBuffer();
+        params.append("[");
+        
+        List<UIParameter> validParams = HtmlRendererUtils.getValidUIParameterChildren(
+                FacesContext.getCurrentInstance(), getChildren(component), false, false);
+        for (UIParameter param : validParams) 
+        {
+            String name = param.getName();
+
+            //Not necessary, since we are using oamSetHiddenInput to create hidden fields
+            if (MyfacesConfig.getCurrentInstance(context.getExternalContext()).isRenderHiddenFieldsForLinkParams())
+            {
+                addHiddenCommandParameter(context, nestingForm, name);
+            }
+
+            Object value = param.getValue();
+
+            //UIParameter is no ValueHolder, so no conversion possible - calling .toString on value....
+            // MYFACES-1832 bad charset encoding for f:param
+            // if HTMLEncoder.encode is called, then
... 38113 lines suppressed ...

-- 
To stop receiving notification emails like this one, please contact
deki@apache.org.

[myfaces] 02/05: copy shared to preserve svn info

Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

deki pushed a commit to branch refactor_shared_2_1_x
in repository https://gitbox.apache.org/repos/asf/myfaces.git

commit 24218344efce34aafd3aaec239078f278520478f
Author: Leonardo Uribe <lu...@apache.org>
AuthorDate: Sat Jul 23 04:27:45 2011 +0000

    copy shared to preserve svn info
---
 shared/pom.xml | 205 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 205 insertions(+)

diff --git a/shared/pom.xml b/shared/pom.xml
new file mode 100644
index 0000000..09ebe01
--- /dev/null
+++ b/shared/pom.xml
@@ -0,0 +1,205 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+-->
+  <parent>
+    <artifactId>myfaces-shared-project</artifactId>
+    <groupId>org.apache.myfaces.shared</groupId>
+    <version>4.1.1-SNAPSHOT</version>
+  </parent>
+
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>myfaces-shared-core</artifactId>
+  <packaging>jar</packaging>
+  <name>Apache MyFaces Shared For JSF 2.1 - Core</name>
+  <description>The MyFaces Shared Core Subproject build the sources artifact
+    needed by the shared-* modules</description>
+
+  <scm>
+    <connection>scm:svn:http://svn.apache.org/repos/asf/myfaces/shared/trunk/core</connection>
+    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/shared/trunk/core</developerConnection>
+    <url>http://svn.apache.org/viewcvs.cgi/myfaces/shared/trunk/core</url>
+  </scm>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <version>1.5</version>
+        <executions>
+          <execution>
+            <id>add-resource</id>
+            <phase>generate-resources</phase>
+            <goals>
+              <goal>add-resource</goal>
+            </goals>
+            <configuration>
+              <resources>
+                <resource>
+                  <directory>${project.build.directory}/generated-resources/myfaces-javascript-plugin/</directory>
+               </resource>
+              </resources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>    
+      <plugin>
+          <artifactId>myfaces-javascript-plugin</artifactId>
+          <groupId>org.apache.myfaces.buildtools</groupId>
+          <version>1.0.1</version>
+          <extensions>true</extensions>
+          <executions>
+               <execution>
+                  <id>compile-myfacesscripts</id>
+                  <goals>
+                      <goal>compile</goal>
+                  </goals>
+                  <phase>generate-resources</phase>
+                  <configuration>
+                      <descriptor>${basedir}/src/assembler/myfacesscripts-compiler.xml</descriptor>
+                      <outputDirectory>${project.build.directory}/generated-resources/myfaces-javascript-plugin/META-INF/resources/org.apache.myfaces/</outputDirectory>
+                  </configuration>
+              </execution>
+              <execution>
+                  <id>compile-myfacesscripts-uncompressed</id>
+                  <goals>
+                      <goal>compile</goal>
+                  </goals>
+                  <phase>generate-resources</phase>
+                  <configuration>
+                      <descriptor>${basedir}/src/assembler/myfacesscripts-uncompressed-compiler.xml</descriptor>
+                      <outputDirectory>${project.build.directory}/generated-resources/myfaces-javascript-plugin/META-INF/internal-resources/org.apache.myfaces/</outputDirectory>
+                  </configuration>
+              </execution>
+              <execution>
+                  <id>compress-myfacesscripts</id>
+                  <goals>
+                      <goal>compress</goal>
+                  </goals>
+                  <phase>generate-resources</phase>
+                  <configuration>
+                      <scripts>target/generated-resources/myfaces-javascript-plugin/META-INF/resources/org.apache.myfaces/</scripts>
+                      <excludes>
+                          <exclude>oamSubmit-uncompressed.js</exclude>
+                      </excludes>
+                      <compressor>yahooUI</compressor>
+                  </configuration>
+              </execution>
+          </executions>
+          <configuration>
+              <optimizationLevel>0</optimizationLevel>
+              <sourceDirectory>src/main/javascript</sourceDirectory>
+              <webappDirectory>${basedir}</webappDirectory>
+              <outputDirectory>${project.build.directory}/generated-resources/myfaces-javascript-plugin/META-INF/resources/org.apache.myfaces/</outputDirectory>
+          </configuration>
+      </plugin>
+      
+      <!-- 
+      <plugin>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>2.1.2</version>
+        <configuration>
+          <excludes>
+            <exclude>**/*StateUtilsAES_CBCTest*</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
+       -->
+      <plugin>
+        <artifactId>maven-source-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>attach-source</id>
+            <goals>
+              <goal>jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  <reporting>
+    <plugins>
+      <plugin>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <version>2.0</version>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>changelog-maven-plugin</artifactId>
+        <version>2.0-beta-1</version>
+        <reportSets>
+          <reportSet>
+            <id>dual-report</id>
+            <configuration>
+              <type>range</type>
+              <range>30</range>
+            </configuration>
+            <reports>
+              <report>changelog</report>
+              <report>file-activity</report>
+              <report>dev-activity</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>jxr-maven-plugin</artifactId>
+      </plugin>
+      <!-- 
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>surefire-report-maven-plugin</artifactId>
+      </plugin>
+       -->
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>taglist-maven-plugin</artifactId>
+        <version>2.0</version>
+      </plugin>
+      <plugin>
+        <artifactId>maven-pmd-plugin</artifactId>
+        <version>2.2</version>
+        <configuration>
+          <rulesets>
+            <ruleset>/rulesets/basic.xml</ruleset>
+            <ruleset>/rulesets/unusedcode.xml</ruleset>
+          </rulesets>
+          <linkXref>true</linkXref>
+          <minimumTokens>100</minimumTokens>
+          <targetJdk>1.5</targetJdk>
+          <excludes>
+            <!-- these class make the PMD plugin crash (NullPointerException). -->
+            <exclude>org/apache/myfaces/el/convert/PropertyResolverToELResolver.java</exclude>
+            <exclude>org/apache/myfaces/el/PropertyResolverImpl.java</exclude>
+          </excludes>
+        </configuration>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>pmd</report>
+              <report>cpd</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+    </plugins>
+  </reporting>
+</project>

-- 
To stop receiving notification emails like this one, please contact
deki@apache.org.

[myfaces] 03/05: change license header and configure pom.xml

Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

deki pushed a commit to branch refactor_shared_2_1_x
in repository https://gitbox.apache.org/repos/asf/myfaces.git

commit 84f67e27003dc8e00398092bf653b66d6ec5dc05
Author: Leonardo Uribe <lu...@apache.org>
AuthorDate: Sat Jul 23 15:54:01 2011 +0000

    change license header and configure pom.xml
---
 shared/pom.xml                                     |  82 ++++-
 .../application/DefaultViewHandlerSupport.java     |  32 +-
 .../shared/application/FacesServletMapping.java    |  32 +-
 .../shared/application/InvalidViewIdException.java |  32 +-
 .../shared/application/ViewHandlerSupport.java     |  32 +-
 .../myfaces/shared/component/BindingAware.java     |  32 +-
 .../shared/component/DisplayValueOnlyCapable.java  |  32 +-
 .../myfaces/shared/component/EscapeCapable.java    |  32 +-
 .../shared/component/ExecuteOnCallback.java        |  32 +-
 .../myfaces/shared/config/MyfacesConfig.java       |  32 +-
 .../shared/context/AjaxExceptionHandlerImpl.java   |  32 +-
 .../shared/context/ExceptionHandlerImpl.java       |  32 +-
 .../shared/context/ResponseWriterWrapper.java      |  32 +-
 .../SwitchAjaxExceptionHandlerWrapperImpl.java     |  32 +-
 .../myfaces/shared/context/flash/FlashImpl.java    |  32 +-
 .../context/flash/FlashScopeDisabledException.java |  32 +-
 .../myfaces/shared/context/flash/SubKeyMap.java    |  32 +-
 .../shared/el/SimpleActionMethodBinding.java       |  32 +-
 .../shared/renderkit/ClientBehaviorEvents.java     |  32 +-
 .../apache/myfaces/shared/renderkit/JSFAttr.java   |  32 +-
 .../myfaces/shared/renderkit/RendererUtils.java    |  32 +-
 .../shared/renderkit/_SharedRendererUtils.java     |  32 +-
 .../apache/myfaces/shared/renderkit/html/HTML.java |  32 +-
 .../renderkit/html/HtmlBodyRendererBase.java       |  32 +-
 .../renderkit/html/HtmlButtonRendererBase.java     |  32 +-
 .../renderkit/html/HtmlCheckboxRendererBase.java   |  32 +-
 .../renderkit/html/HtmlFormRendererBase.java       |  32 +-
 .../renderkit/html/HtmlGridRendererBase.java       |  32 +-
 .../renderkit/html/HtmlGroupRendererBase.java      |  32 +-
 .../renderkit/html/HtmlImageRendererBase.java      |  32 +-
 .../renderkit/html/HtmlLinkRendererBase.java       |  32 +-
 .../renderkit/html/HtmlListboxRendererBase.java    |  32 +-
 .../renderkit/html/HtmlMenuRendererBase.java       |  32 +-
 .../renderkit/html/HtmlMessageRendererBase.java    |  32 +-
 .../renderkit/html/HtmlMessagesRendererBase.java   |  32 +-
 .../html/HtmlOutcomeTargetButtonRendererBase.java  |  32 +-
 .../renderkit/html/HtmlRadioRendererBase.java      |  32 +-
 .../shared/renderkit/html/HtmlRenderer.java        |  32 +-
 .../shared/renderkit/html/HtmlRendererUtils.java   |  32 +-
 .../renderkit/html/HtmlResponseWriterImpl.java     |  32 +-
 .../renderkit/html/HtmlSecretRendererBase.java     |  32 +-
 .../renderkit/html/HtmlTableRendererBase.java      |  32 +-
 .../renderkit/html/HtmlTextRendererBase.java       |  32 +-
 .../renderkit/html/HtmlTextareaRendererBase.java   |  32 +-
 .../shared/renderkit/html/util/FormInfo.java       |  32 +-
 .../shared/renderkit/html/util/HTMLEncoder.java    |  32 +-
 .../renderkit/html/util/JavascriptUtils.java       |  32 +-
 .../shared/renderkit/html/util/ResourceUtils.java  |  32 +-
 .../shared/renderkit/html/util/UnicodeEncoder.java |  32 +-
 .../shared/resource/AliasResourceMetaImpl.java     |  32 +-
 .../resource/BaseResourceHandlerSupport.java       |  32 +-
 .../shared/resource/ClassLoaderResourceLoader.java |  32 +-
 .../resource/ExternalContextResourceLoader.java    |  32 +-
 .../shared/resource/ResourceHandlerCache.java      |  32 +-
 .../shared/resource/ResourceHandlerSupport.java    |  32 +-
 .../myfaces/shared/resource/ResourceImpl.java      |  32 +-
 .../myfaces/shared/resource/ResourceLoader.java    |  32 +-
 .../shared/resource/ResourceLoaderUtils.java       |  32 +-
 .../myfaces/shared/resource/ResourceMeta.java      |  32 +-
 .../myfaces/shared/resource/ResourceMetaImpl.java  |  32 +-
 .../shared/taglib/UIComponentBodyELTagBase.java    |  32 +-
 .../shared/taglib/UIComponentBodyTagBase.java      |  32 +-
 .../shared/taglib/UIComponentELTagBase.java        |  32 +-
 .../shared/taglib/UIComponentELTagUtils.java       |  32 +-
 .../myfaces/shared/taglib/UIComponentTagBase.java  |  32 +-
 .../myfaces/shared/taglib/UIComponentTagUtils.java |  32 +-
 .../shared/taglib/core/ConvertDateTimeTagBase.java |  32 +-
 .../shared/taglib/core/SelectItemTagBase.java      |  32 +-
 .../taglib/html/HtmlCommandButtonELTagBase.java    |  32 +-
 .../taglib/html/HtmlCommandButtonTagBase.java      |  32 +-
 .../taglib/html/HtmlCommandLinkELTagBase.java      |  32 +-
 .../shared/taglib/html/HtmlCommandLinkTagBase.java |  32 +-
 .../taglib/html/HtmlComponentBodyELTagBase.java    |  32 +-
 .../taglib/html/HtmlComponentBodyTagBase.java      |  32 +-
 .../shared/taglib/html/HtmlComponentELTagBase.java |  32 +-
 .../shared/taglib/html/HtmlComponentTagBase.java   |  32 +-
 .../shared/taglib/html/HtmlDataTableELTagBase.java |  32 +-
 .../shared/taglib/html/HtmlDataTableTagBase.java   |  32 +-
 .../shared/taglib/html/HtmlFormELTagBase.java      |  32 +-
 .../shared/taglib/html/HtmlFormTagBase.java        |  32 +-
 .../taglib/html/HtmlGraphicImageELTagBase.java     |  32 +-
 .../taglib/html/HtmlGraphicImageTagBase.java       |  32 +-
 .../shared/taglib/html/HtmlInputELTagBase.java     |  32 +-
 .../taglib/html/HtmlInputHiddenELTagBase.java      |  32 +-
 .../shared/taglib/html/HtmlInputHiddenTagBase.java |  32 +-
 .../taglib/html/HtmlInputSecretELTagBase.java      |  32 +-
 .../shared/taglib/html/HtmlInputSecretTagBase.java |  32 +-
 .../shared/taglib/html/HtmlInputTagBase.java       |  32 +-
 .../shared/taglib/html/HtmlInputTextELTagBase.java |  32 +-
 .../shared/taglib/html/HtmlInputTextTagBase.java   |  32 +-
 .../taglib/html/HtmlInputTextareaELTagBase.java    |  32 +-
 .../taglib/html/HtmlInputTextareaTagBase.java      |  32 +-
 .../shared/taglib/html/HtmlMessageELTagBase.java   |  32 +-
 .../shared/taglib/html/HtmlMessageTagBase.java     |  32 +-
 .../shared/taglib/html/HtmlMessagesELTagBase.java  |  32 +-
 .../shared/taglib/html/HtmlMessagesTagBase.java    |  32 +-
 .../taglib/html/HtmlOutputFormatELTagBase.java     |  32 +-
 .../taglib/html/HtmlOutputFormatTagBase.java       |  32 +-
 .../taglib/html/HtmlOutputLabelELTagBase.java      |  32 +-
 .../shared/taglib/html/HtmlOutputLabelTagBase.java |  32 +-
 .../taglib/html/HtmlOutputLinkELTagBase.java       |  32 +-
 .../shared/taglib/html/HtmlOutputLinkTagBase.java  |  32 +-
 .../taglib/html/HtmlOutputTextELTagBase.java       |  32 +-
 .../shared/taglib/html/HtmlOutputTextTagBase.java  |  32 +-
 .../shared/taglib/html/HtmlPanelGridELTagBase.java |  32 +-
 .../shared/taglib/html/HtmlPanelGridTagBase.java   |  32 +-
 .../taglib/html/HtmlPanelGroupELTagBase.java       |  32 +-
 .../shared/taglib/html/HtmlPanelGroupTagBase.java  |  32 +-
 .../html/HtmlSelectBooleanCheckboxELTagBase.java   |  32 +-
 .../html/HtmlSelectBooleanCheckboxTagBase.java     |  32 +-
 .../taglib/html/HtmlSelectListboxELTagBase.java    |  32 +-
 .../taglib/html/HtmlSelectListboxTagBase.java      |  32 +-
 .../html/HtmlSelectManyCheckboxELTagBase.java      |  32 +-
 .../taglib/html/HtmlSelectManyCheckboxTagBase.java |  32 +-
 .../taglib/html/HtmlSelectMenuELTagBase.java       |  32 +-
 .../shared/taglib/html/HtmlSelectMenuTagBase.java  |  32 +-
 .../taglib/html/HtmlSelectOneRadioELTagBase.java   |  32 +-
 .../taglib/html/HtmlSelectOneRadioTagBase.java     |  32 +-
 .../myfaces/shared/test/ClassElementHandler.java   |  32 +-
 .../org/apache/myfaces/shared/trace/Closure.java   |  33 +-
 .../myfaces/shared/trace/TracingIterator.java      |  32 +-
 .../myfaces/shared/trace/TracingSupport.java       |  32 +-
 .../org/apache/myfaces/shared/util/ArrayUtils.java |  32 +-
 .../org/apache/myfaces/shared/util/Assert.java     |  32 +-
 .../myfaces/shared/util/BiLevelCacheMap.java       |  32 +-
 .../myfaces/shared/util/ClassLoaderExtension.java  |  32 +-
 .../myfaces/shared/util/ClassLoaderUtils.java      |  32 +-
 .../org/apache/myfaces/shared/util/ClassUtils.java |  32 +-
 .../apache/myfaces/shared/util/CommentUtils.java   |  32 +-
 .../apache/myfaces/shared/util/ExceptionUtils.java |  32 +-
 .../myfaces/shared/util/ExternalContextUtils.java  |  32 +-
 .../org/apache/myfaces/shared/util/FastWriter.java |  32 +-
 .../apache/myfaces/shared/util/HashMapUtils.java   |  32 +-
 .../apache/myfaces/shared/util/LocaleUtils.java    |  32 +-
 .../apache/myfaces/shared/util/MessageUtils.java   |  32 +-
 .../myfaces/shared/util/MyFacesClassLoader.java    |  32 +-
 .../shared/util/MyFacesObjectInputStream.java      |  32 +-
 .../myfaces/shared/util/NullEnumeration.java       |  32 +-
 .../apache/myfaces/shared/util/NullIterator.java   |  32 +-
 .../shared/util/ParametrizableFacesMessage.java    |  32 +-
 .../apache/myfaces/shared/util/RequestType.java    |  32 +-
 .../myfaces/shared/util/RestoreStateUtils.java     |  32 +-
 .../myfaces/shared/util/SelectItemsIterator.java   |  32 +-
 .../org/apache/myfaces/shared/util/StateUtils.java |  32 +-
 .../apache/myfaces/shared/util/StringUtils.java    |  32 +-
 .../myfaces/shared/util/WebConfigParamUtils.java   |  32 +-
 .../myfaces/shared/util/_ComponentUtils.java       |  32 +-
 .../apache/myfaces/shared/util/_EmptyIterator.java |  32 +-
 .../apache/myfaces/shared/util/el/ActionsMap.java  |  32 +-
 .../apache/myfaces/shared/util/el/GenericMap.java  |  32 +-
 .../apache/myfaces/shared/util/el/StringMap.java   |  32 +-
 .../apache/myfaces/shared/util/el/TestsMap.java    |  32 +-
 .../shared/util/serial/DefaultSerialFactory.java   |  32 +-
 .../myfaces/shared/util/serial/SerialFactory.java  |  32 +-
 .../shared/util/servlet/SourceCodeServlet.java     |  32 +-
 .../shared/util/xml/MyFacesErrorHandler.java       |  32 +-
 .../apache/myfaces/shared/util/xml/XmlUtils.java   |  32 +-
 .../shared/view/HttpServletResponseSwitch.java     |  32 +-
 .../view/JspViewDeclarationLanguageBase.java       |  32 +-
 .../apache/myfaces/shared/view/ResponseSwitch.java |  32 +-
 .../myfaces/shared/view/ServletResponseSwitch.java |  32 +-
 .../shared/view/SwitchableOutputStream.java        |  32 +-
 .../myfaces/shared/view/SwitchableWriter.java      |  32 +-
 .../shared/view/ViewDeclarationLanguageBase.java   |  32 +-
 .../myfaces/shared/view/ViewResponseWrapper.java   |  32 +-
 .../webapp/webxml/DelegatedFacesServlet.java       |  23 --
 .../shared/webapp/webxml/FilterMapping.java        |  67 ----
 .../shared/webapp/webxml/ServletMapping.java       |  87 -----
 .../myfaces/shared/webapp/webxml/WebXml.java       | 282 ----------------
 .../myfaces/shared/webapp/webxml/WebXmlParser.java | 373 ---------------------
 .../shared/webapp/webxml/ServletMappingTest.java   |  53 ---
 171 files changed, 2703 insertions(+), 3513 deletions(-)

diff --git a/shared/pom.xml b/shared/pom.xml
index 09ebe01..269539f 100644
--- a/shared/pom.xml
+++ b/shared/pom.xml
@@ -18,13 +18,15 @@
  under the License.
 -->
   <parent>
-    <artifactId>myfaces-shared-project</artifactId>
-    <groupId>org.apache.myfaces.shared</groupId>
-    <version>4.1.1-SNAPSHOT</version>
+      <groupId>org.apache.myfaces.core</groupId>
+      <artifactId>myfaces-core-project</artifactId>
+      <version>2.1.2-SNAPSHOT</version>
   </parent>
 
   <modelVersion>4.0.0</modelVersion>
-  <artifactId>myfaces-shared-core</artifactId>
+  
+  <groupId>org.apache.myfaces.core.internal</groupId>
+  <artifactId>myfaces-impl-shared</artifactId>
   <packaging>jar</packaging>
   <name>Apache MyFaces Shared For JSF 2.1 - Core</name>
   <description>The MyFaces Shared Core Subproject build the sources artifact
@@ -35,9 +37,81 @@
     <developerConnection>scm:svn:https://svn.apache.org/repos/asf/myfaces/shared/trunk/core</developerConnection>
     <url>http://svn.apache.org/viewcvs.cgi/myfaces/shared/trunk/core</url>
   </scm>
+  
+  <dependencies>
+        <!-- myfaces-api -->
+        <dependency>
+            <groupId>org.apache.myfaces.core</groupId>
+            <artifactId>myfaces-api</artifactId>
+        </dependency>
+
+        <!-- Servlet 2.5 -->
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-servlet_2.5_spec</artifactId>
+        </dependency>
+
+        <!-- JSP 2.1 -->
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-jsp_2.1_spec</artifactId>
+        </dependency>
+        
+        <!-- el 2.2 (javax.el.*) -->
+        <dependency>
+            <groupId>org.apache.geronimo.specs</groupId>
+            <artifactId>geronimo-el_2.2_spec</artifactId>
+        </dependency>
+        
+        <!-- builder-annotations like @JSFWebConfigParam -->
+        <dependency>
+            <groupId>org.apache.myfaces.buildtools</groupId>
+            <artifactId>myfaces-builder-annotations</artifactId>
+        </dependency>
+        
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.myfaces.test</groupId>
+            <artifactId>myfaces-test20</artifactId>
+        </dependency>
+        
+        <dependency>
+            <groupId>commons-logging</groupId>
+            <artifactId>commons-logging</artifactId>
+            <version>1.1.1</version>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- easymock -->
+        <dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymock</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.easymock</groupId>
+            <artifactId>easymockclassextension</artifactId>
+        </dependency>
+  
+  </dependencies>
 
   <build>
     <plugins>
+     <plugin>
+         <groupId>org.apache.myfaces.buildtools</groupId>
+         <artifactId>myfaces-builder-plugin</artifactId>
+         <executions>
+           <execution>
+               <id>makemyfacesmetadata</id>
+               <goals>
+                 <goal>build-metadata</goal>
+               </goals>
+           </execution>
+         </executions>
+      </plugin>
       <plugin>
         <groupId>org.codehaus.mojo</groupId>
         <artifactId>build-helper-maven-plugin</artifactId>
diff --git a/shared/src/main/java/org/apache/myfaces/shared/application/DefaultViewHandlerSupport.java b/shared/src/main/java/org/apache/myfaces/shared/application/DefaultViewHandlerSupport.java
index 9843098..a86f00f 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/application/DefaultViewHandlerSupport.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/application/DefaultViewHandlerSupport.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.application;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMapping.java b/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMapping.java
index 99fe26a..d94ed47 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMapping.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMapping.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.application;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/application/InvalidViewIdException.java b/shared/src/main/java/org/apache/myfaces/shared/application/InvalidViewIdException.java
index 9e1f205..6f5f206 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/application/InvalidViewIdException.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/application/InvalidViewIdException.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.application;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/application/ViewHandlerSupport.java b/shared/src/main/java/org/apache/myfaces/shared/application/ViewHandlerSupport.java
index cdb4774..3c0fc91 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/application/ViewHandlerSupport.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/application/ViewHandlerSupport.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.application;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/component/BindingAware.java b/shared/src/main/java/org/apache/myfaces/shared/component/BindingAware.java
index 3161d02..40363d8 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/component/BindingAware.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/component/BindingAware.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.component;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/component/DisplayValueOnlyCapable.java b/shared/src/main/java/org/apache/myfaces/shared/component/DisplayValueOnlyCapable.java
index c05be7b..59c4ee7 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/component/DisplayValueOnlyCapable.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/component/DisplayValueOnlyCapable.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.component;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/component/EscapeCapable.java b/shared/src/main/java/org/apache/myfaces/shared/component/EscapeCapable.java
index 553ed98..cb87f8e 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/component/EscapeCapable.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/component/EscapeCapable.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.component;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/component/ExecuteOnCallback.java b/shared/src/main/java/org/apache/myfaces/shared/component/ExecuteOnCallback.java
index baba0d1..6732890 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/component/ExecuteOnCallback.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/component/ExecuteOnCallback.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.component;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java b/shared/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java
index 0172d5d..65f6e51 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/config/MyfacesConfig.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.config;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/AjaxExceptionHandlerImpl.java b/shared/src/main/java/org/apache/myfaces/shared/context/AjaxExceptionHandlerImpl.java
index 4c912ad..d6b4b41 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/context/AjaxExceptionHandlerImpl.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/AjaxExceptionHandlerImpl.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.context;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/ExceptionHandlerImpl.java b/shared/src/main/java/org/apache/myfaces/shared/context/ExceptionHandlerImpl.java
index 0835962..a315c81 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/context/ExceptionHandlerImpl.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/ExceptionHandlerImpl.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.context;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/ResponseWriterWrapper.java b/shared/src/main/java/org/apache/myfaces/shared/context/ResponseWriterWrapper.java
index 2826881..ac38b12 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/context/ResponseWriterWrapper.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/ResponseWriterWrapper.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.context;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/SwitchAjaxExceptionHandlerWrapperImpl.java b/shared/src/main/java/org/apache/myfaces/shared/context/SwitchAjaxExceptionHandlerWrapperImpl.java
index 306c257..ccea7f5 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/context/SwitchAjaxExceptionHandlerWrapperImpl.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/SwitchAjaxExceptionHandlerWrapperImpl.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.context;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashImpl.java b/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashImpl.java
index d47ee1e..43c6ab7 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashImpl.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashImpl.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.context.flash;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashScopeDisabledException.java b/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashScopeDisabledException.java
index 9979545..07f09d4 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashScopeDisabledException.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/flash/FlashScopeDisabledException.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.context.flash;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/context/flash/SubKeyMap.java b/shared/src/main/java/org/apache/myfaces/shared/context/flash/SubKeyMap.java
index 4b8e3bb..479f4fb 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/context/flash/SubKeyMap.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/context/flash/SubKeyMap.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.context.flash;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/el/SimpleActionMethodBinding.java b/shared/src/main/java/org/apache/myfaces/shared/el/SimpleActionMethodBinding.java
index c121ce5..b83af32 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/el/SimpleActionMethodBinding.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/el/SimpleActionMethodBinding.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.el;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/ClientBehaviorEvents.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/ClientBehaviorEvents.java
index b9dd627..85212c4 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/ClientBehaviorEvents.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/ClientBehaviorEvents.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java
index af1401a..35d292a 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java
index 5188b44..df0d78c 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/RendererUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java
index 01aae7e..dc723f7 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/_SharedRendererUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java
index 4919e8e..16ff0d2 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlBodyRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlBodyRendererBase.java
index 032a5ea..6af2b1d 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlBodyRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlBodyRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java
index 7a619e6..d120fe3 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlButtonRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java
index f098fdf..1020473 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlFormRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlFormRendererBase.java
index d0b4d3c..63ecf72 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlFormRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlFormRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java
index a206972..428419b 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGroupRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGroupRendererBase.java
index b091af7..e7b90e2 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGroupRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGroupRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java
index 9d7fa91..1025f4a 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
index 9787133..04790d4 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlListboxRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlListboxRendererBase.java
index 17fdabe..319516c 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlListboxRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlListboxRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMenuRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMenuRendererBase.java
index 08a73d8..e2efbbf 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMenuRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMenuRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java
index 439a132..0128205 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessagesRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessagesRendererBase.java
index db9fae8..6dbcd58 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessagesRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessagesRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlOutcomeTargetButtonRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlOutcomeTargetButtonRendererBase.java
index d134a3d..91f3e17 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlOutcomeTargetButtonRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlOutcomeTargetButtonRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java
index 847d1e7..9ce5ac9 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRenderer.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRenderer.java
index 1913e59..f524c63 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRenderer.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRenderer.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
index a04409b..313c65f 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java
index e051edb..891d3d0 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlResponseWriterImpl.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java
index 42cd03e..50509d4 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java
index de908fe..e5d6cd7 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java
index 7e0cc21..c90ffbc 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java
index f2b70bb..da61233 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/FormInfo.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/FormInfo.java
index 56b6fbd..fa4f532 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/FormInfo.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/FormInfo.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java
index e76357e..1b30fd2 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java
index 8b9c9b8..2fa538b 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/JavascriptUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/ResourceUtils.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/ResourceUtils.java
index 2a747a4..a9c2602 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/ResourceUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/ResourceUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/UnicodeEncoder.java b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/UnicodeEncoder.java
index e4ac80b..4b2553d 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/UnicodeEncoder.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/util/UnicodeEncoder.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.renderkit.html.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/resource/AliasResourceMetaImpl.java b/shared/src/main/java/org/apache/myfaces/shared/resource/AliasResourceMetaImpl.java
index 7dbf788..d319ad7 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/resource/AliasResourceMetaImpl.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/resource/AliasResourceMetaImpl.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.resource;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/resource/BaseResourceHandlerSupport.java b/shared/src/main/java/org/apache/myfaces/shared/resource/BaseResourceHandlerSupport.java
index 51d5907..ff3328a 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/resource/BaseResourceHandlerSupport.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/resource/BaseResourceHandlerSupport.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.resource;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/resource/ClassLoaderResourceLoader.java b/shared/src/main/java/org/apache/myfaces/shared/resource/ClassLoaderResourceLoader.java
index a2f0883..5125180 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/resource/ClassLoaderResourceLoader.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/resource/ClassLoaderResourceLoader.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.resource;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/resource/ExternalContextResourceLoader.java b/shared/src/main/java/org/apache/myfaces/shared/resource/ExternalContextResourceLoader.java
index 0ef4e07..8fbfc69 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/resource/ExternalContextResourceLoader.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/resource/ExternalContextResourceLoader.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.resource;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceHandlerCache.java b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceHandlerCache.java
index cacf701..7c7e4ef 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceHandlerCache.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceHandlerCache.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.resource;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceHandlerSupport.java b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceHandlerSupport.java
index b7e4355..9b1c243 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceHandlerSupport.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceHandlerSupport.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.resource;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceImpl.java b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceImpl.java
index e9313fa..0d3117b 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceImpl.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceImpl.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.resource;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceLoader.java b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceLoader.java
index bcae8fb..6dc040a 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceLoader.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceLoader.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.resource;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceLoaderUtils.java b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceLoaderUtils.java
index 27977e1..fe8dbff 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceLoaderUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceLoaderUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.resource;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceMeta.java b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceMeta.java
index 3d69afb..34ed166 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceMeta.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceMeta.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.resource;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceMetaImpl.java b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceMetaImpl.java
index f1486b6..ae3857b 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceMetaImpl.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/resource/ResourceMetaImpl.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.resource;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentBodyELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentBodyELTagBase.java
index 700a365..97225c3 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentBodyELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentBodyELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentBodyTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentBodyTagBase.java
index c46fc95..9676884 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentBodyTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentBodyTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentELTagBase.java
index 62dbd8c..8b599a6 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentELTagUtils.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentELTagUtils.java
index 861b667..25d2595 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentELTagUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentELTagUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentTagBase.java
index e84c06c..1dbef90 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentTagUtils.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentTagUtils.java
index 40f5aaf..5c509e3 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentTagUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/UIComponentTagUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/core/ConvertDateTimeTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/core/ConvertDateTimeTagBase.java
index 9abc26d..e1f61c3 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/core/ConvertDateTimeTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/core/ConvertDateTimeTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.core;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/core/SelectItemTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/core/SelectItemTagBase.java
index 08cbc8d..4d0c5d6 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/core/SelectItemTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/core/SelectItemTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.core;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandButtonELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandButtonELTagBase.java
index 7dc09ec..9c6d12f 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandButtonELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandButtonELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandButtonTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandButtonTagBase.java
index 2a135f3..6304612 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandButtonTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandButtonTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandLinkELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandLinkELTagBase.java
index 81edb79..9159058 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandLinkELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandLinkELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandLinkTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandLinkTagBase.java
index 7628c03..ca89194 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandLinkTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlCommandLinkTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentBodyELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentBodyELTagBase.java
index c3072bb..77a0ca0 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentBodyELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentBodyELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentBodyTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentBodyTagBase.java
index aabea3c..552d1d8 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentBodyTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentBodyTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentELTagBase.java
index 17e7e56..6c94687 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentTagBase.java
index f2a6dc5..dfa6d57 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlComponentTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlDataTableELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlDataTableELTagBase.java
index b89e4a1..09f2621 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlDataTableELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlDataTableELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlDataTableTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlDataTableTagBase.java
index ab0eb00..89cb930 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlDataTableTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlDataTableTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlFormELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlFormELTagBase.java
index 1a352cd..575aef5 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlFormELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlFormELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlFormTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlFormTagBase.java
index 5adfb0e..58bc7d3 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlFormTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlFormTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlGraphicImageELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlGraphicImageELTagBase.java
index ed955b1..ce48286 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlGraphicImageELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlGraphicImageELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlGraphicImageTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlGraphicImageTagBase.java
index 7a91dc0..8d82837 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlGraphicImageTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlGraphicImageTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputELTagBase.java
index 13b5bd8..0aa4a14 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputHiddenELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputHiddenELTagBase.java
index 13b1757..e80b3cd 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputHiddenELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputHiddenELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputHiddenTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputHiddenTagBase.java
index bdac88a..58b9569 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputHiddenTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputHiddenTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputSecretELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputSecretELTagBase.java
index d43026e..db4594d 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputSecretELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputSecretELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputSecretTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputSecretTagBase.java
index 2444292..c6a9767 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputSecretTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputSecretTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTagBase.java
index 7220833..13a6575 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextELTagBase.java
index e4bfdd0..384895b 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextTagBase.java
index 6351973..06277f4 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextareaELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextareaELTagBase.java
index 21cbe17..5a86373 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextareaELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextareaELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextareaTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextareaTagBase.java
index 1195064..584b2e8 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextareaTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlInputTextareaTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessageELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessageELTagBase.java
index 63d54e0..2df5d95 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessageELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessageELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessageTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessageTagBase.java
index 6c47f94..fd31090 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessageTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessageTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessagesELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessagesELTagBase.java
index 37ee756..41df8c5 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessagesELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessagesELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessagesTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessagesTagBase.java
index 03c7b71..d88676d 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessagesTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlMessagesTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputFormatELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputFormatELTagBase.java
index 3a978a8..83b13f5 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputFormatELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputFormatELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputFormatTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputFormatTagBase.java
index 12be1c7..ed7d39f 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputFormatTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputFormatTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLabelELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLabelELTagBase.java
index 5f5b21a..14e4b65 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLabelELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLabelELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLabelTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLabelTagBase.java
index 7ce15d3..d57afec 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLabelTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLabelTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLinkELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLinkELTagBase.java
index c467f60..d776888 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLinkELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLinkELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLinkTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLinkTagBase.java
index 929b75a..404891e 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLinkTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputLinkTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputTextELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputTextELTagBase.java
index effab64..38e9216 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputTextELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputTextELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputTextTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputTextTagBase.java
index c09af9a..2359441 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputTextTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlOutputTextTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGridELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGridELTagBase.java
index 188e5a3..fd83943 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGridELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGridELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGridTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGridTagBase.java
index eed063d..e9f2c49 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGridTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGridTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGroupELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGroupELTagBase.java
index 5744db4..0d5ebc5 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGroupELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGroupELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGroupTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGroupTagBase.java
index 32bd4d2..5f1db73 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGroupTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlPanelGroupTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectBooleanCheckboxELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectBooleanCheckboxELTagBase.java
index a7b81c2..2f66d41 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectBooleanCheckboxELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectBooleanCheckboxELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectBooleanCheckboxTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectBooleanCheckboxTagBase.java
index b851c90..ff792de 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectBooleanCheckboxTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectBooleanCheckboxTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectListboxELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectListboxELTagBase.java
index 688c989..ece200b 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectListboxELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectListboxELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectListboxTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectListboxTagBase.java
index 006b3c8..2d80c31 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectListboxTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectListboxTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectManyCheckboxELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectManyCheckboxELTagBase.java
index 2bd7709..3bc17fb 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectManyCheckboxELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectManyCheckboxELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectManyCheckboxTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectManyCheckboxTagBase.java
index 0f52012..243edad 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectManyCheckboxTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectManyCheckboxTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectMenuELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectMenuELTagBase.java
index e4853c4..8e64037 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectMenuELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectMenuELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectMenuTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectMenuTagBase.java
index c4c182a..90ea4ee 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectMenuTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectMenuTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectOneRadioELTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectOneRadioELTagBase.java
index eac3f37..8629777 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectOneRadioELTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectOneRadioELTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectOneRadioTagBase.java b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectOneRadioTagBase.java
index 5a668ec..7ae6bca 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectOneRadioTagBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/taglib/html/HtmlSelectOneRadioTagBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.taglib.html;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/test/ClassElementHandler.java b/shared/src/main/java/org/apache/myfaces/shared/test/ClassElementHandler.java
index e2aa90b..0b1fda4 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/test/ClassElementHandler.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/test/ClassElementHandler.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.test;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/trace/Closure.java b/shared/src/main/java/org/apache/myfaces/shared/trace/Closure.java
index c4ddfc4..b1f8c5d 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/trace/Closure.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/trace/Closure.java
@@ -1,21 +1,22 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
+
 package org.apache.myfaces.shared.trace;
 
 public interface Closure<T>
diff --git a/shared/src/main/java/org/apache/myfaces/shared/trace/TracingIterator.java b/shared/src/main/java/org/apache/myfaces/shared/trace/TracingIterator.java
index 767c3f9..a072b57 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/trace/TracingIterator.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/trace/TracingIterator.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.trace;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/trace/TracingSupport.java b/shared/src/main/java/org/apache/myfaces/shared/trace/TracingSupport.java
index 7cce01c..fae3cdc 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/trace/TracingSupport.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/trace/TracingSupport.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.trace;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/ArrayUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/ArrayUtils.java
index 463daca..baa426d 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/util/ArrayUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/ArrayUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/Assert.java b/shared/src/main/java/org/apache/myfaces/shared/util/Assert.java
index 6e6b4d5..f136bea 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/Assert.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/Assert.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/BiLevelCacheMap.java b/shared/src/main/java/org/apache/myfaces/shared/util/BiLevelCacheMap.java
index be98604..0a14e2c 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/util/BiLevelCacheMap.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/BiLevelCacheMap.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/ClassLoaderExtension.java b/shared/src/main/java/org/apache/myfaces/shared/util/ClassLoaderExtension.java
index acac5f5..566deb6 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/ClassLoaderExtension.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/ClassLoaderExtension.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/ClassLoaderUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/ClassLoaderUtils.java
index e2d9fdc..bb84025 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/ClassLoaderUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/ClassLoaderUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/ClassUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/ClassUtils.java
index 768ae1d..e8af115 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/util/ClassUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/ClassUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/CommentUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/CommentUtils.java
index 46d9e50..e669131 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/CommentUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/CommentUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/ExceptionUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/ExceptionUtils.java
index e9e4a04..1d9ef88 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/ExceptionUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/ExceptionUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/ExternalContextUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/ExternalContextUtils.java
index eaa182f..e47511d 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/ExternalContextUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/ExternalContextUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/FastWriter.java b/shared/src/main/java/org/apache/myfaces/shared/util/FastWriter.java
index 66d8c4b..c3845ee 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/FastWriter.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/FastWriter.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/HashMapUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/HashMapUtils.java
index 7ababd1..c7c894a 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/util/HashMapUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/HashMapUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/LocaleUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/LocaleUtils.java
index c970fec..e5969b6 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/util/LocaleUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/LocaleUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/MessageUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/MessageUtils.java
index ed9c0b2..a7f6343 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/util/MessageUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/MessageUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/MyFacesClassLoader.java b/shared/src/main/java/org/apache/myfaces/shared/util/MyFacesClassLoader.java
index bf60c49..e1790f1 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/MyFacesClassLoader.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/MyFacesClassLoader.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/MyFacesObjectInputStream.java b/shared/src/main/java/org/apache/myfaces/shared/util/MyFacesObjectInputStream.java
index fc96985..fa2b9fa 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/MyFacesObjectInputStream.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/MyFacesObjectInputStream.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/NullEnumeration.java b/shared/src/main/java/org/apache/myfaces/shared/util/NullEnumeration.java
index 663202a..1cfa4f1 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/util/NullEnumeration.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/NullEnumeration.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/NullIterator.java b/shared/src/main/java/org/apache/myfaces/shared/util/NullIterator.java
index e81d399..dbd707e 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/util/NullIterator.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/NullIterator.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/ParametrizableFacesMessage.java b/shared/src/main/java/org/apache/myfaces/shared/util/ParametrizableFacesMessage.java
index 223ec7a..d10c936 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/ParametrizableFacesMessage.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/ParametrizableFacesMessage.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/RequestType.java b/shared/src/main/java/org/apache/myfaces/shared/util/RequestType.java
index 3e2f30f..dbe4845 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/RequestType.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/RequestType.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/RestoreStateUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/RestoreStateUtils.java
index b650819..288a453 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/RestoreStateUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/RestoreStateUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/SelectItemsIterator.java b/shared/src/main/java/org/apache/myfaces/shared/util/SelectItemsIterator.java
index b163e3a..2d5e833 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/SelectItemsIterator.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/SelectItemsIterator.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/StateUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/StateUtils.java
index 56c0a5e..5afe569 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/StateUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/StateUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/StringUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/StringUtils.java
index d908042..1085c11 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/util/StringUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/StringUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/WebConfigParamUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/WebConfigParamUtils.java
index 74cc7fd..8aa3f7c 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/WebConfigParamUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/WebConfigParamUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/_ComponentUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/_ComponentUtils.java
index 9d14d25..5125812 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/_ComponentUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/_ComponentUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/_EmptyIterator.java b/shared/src/main/java/org/apache/myfaces/shared/util/_EmptyIterator.java
index bc1e371..ecf5457 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/_EmptyIterator.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/_EmptyIterator.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/el/ActionsMap.java b/shared/src/main/java/org/apache/myfaces/shared/util/el/ActionsMap.java
index 3353010..4a14964 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/el/ActionsMap.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/el/ActionsMap.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util.el;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/el/GenericMap.java b/shared/src/main/java/org/apache/myfaces/shared/util/el/GenericMap.java
index a37432f..ca2b160 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/el/GenericMap.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/el/GenericMap.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util.el;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/el/StringMap.java b/shared/src/main/java/org/apache/myfaces/shared/util/el/StringMap.java
index 176f1a4..c699bb9 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/el/StringMap.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/el/StringMap.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util.el;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/el/TestsMap.java b/shared/src/main/java/org/apache/myfaces/shared/util/el/TestsMap.java
index 143c711..012a7b1 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/el/TestsMap.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/el/TestsMap.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util.el;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/serial/DefaultSerialFactory.java b/shared/src/main/java/org/apache/myfaces/shared/util/serial/DefaultSerialFactory.java
index 1fe9fef..173264f 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/serial/DefaultSerialFactory.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/serial/DefaultSerialFactory.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util.serial;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/serial/SerialFactory.java b/shared/src/main/java/org/apache/myfaces/shared/util/serial/SerialFactory.java
index 3ff6274..eded36b 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/serial/SerialFactory.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/serial/SerialFactory.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util.serial;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/servlet/SourceCodeServlet.java b/shared/src/main/java/org/apache/myfaces/shared/util/servlet/SourceCodeServlet.java
index 9bc7626..e65017a 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/util/servlet/SourceCodeServlet.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/servlet/SourceCodeServlet.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util.servlet;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/xml/MyFacesErrorHandler.java b/shared/src/main/java/org/apache/myfaces/shared/util/xml/MyFacesErrorHandler.java
index ce1965b..45da597 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/util/xml/MyFacesErrorHandler.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/xml/MyFacesErrorHandler.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util.xml;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/util/xml/XmlUtils.java b/shared/src/main/java/org/apache/myfaces/shared/util/xml/XmlUtils.java
index 1553395..f03c5ee 100755
--- a/shared/src/main/java/org/apache/myfaces/shared/util/xml/XmlUtils.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/util/xml/XmlUtils.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.util.xml;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/view/HttpServletResponseSwitch.java b/shared/src/main/java/org/apache/myfaces/shared/view/HttpServletResponseSwitch.java
index d0c0f23..527480a 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/view/HttpServletResponseSwitch.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/view/HttpServletResponseSwitch.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.view;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/view/JspViewDeclarationLanguageBase.java b/shared/src/main/java/org/apache/myfaces/shared/view/JspViewDeclarationLanguageBase.java
index 2f0a322..547fdbf 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/view/JspViewDeclarationLanguageBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/view/JspViewDeclarationLanguageBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.view;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/view/ResponseSwitch.java b/shared/src/main/java/org/apache/myfaces/shared/view/ResponseSwitch.java
index 2b255a5..f36fb20 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/view/ResponseSwitch.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/view/ResponseSwitch.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.view;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/view/ServletResponseSwitch.java b/shared/src/main/java/org/apache/myfaces/shared/view/ServletResponseSwitch.java
index a52fe58..e3348fd 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/view/ServletResponseSwitch.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/view/ServletResponseSwitch.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.view;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/view/SwitchableOutputStream.java b/shared/src/main/java/org/apache/myfaces/shared/view/SwitchableOutputStream.java
index 96e433a..061c757 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/view/SwitchableOutputStream.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/view/SwitchableOutputStream.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.view;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/view/SwitchableWriter.java b/shared/src/main/java/org/apache/myfaces/shared/view/SwitchableWriter.java
index f482a68..f20f3f7 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/view/SwitchableWriter.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/view/SwitchableWriter.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.view;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/view/ViewDeclarationLanguageBase.java b/shared/src/main/java/org/apache/myfaces/shared/view/ViewDeclarationLanguageBase.java
index b7545c5..c22fa48 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/view/ViewDeclarationLanguageBase.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/view/ViewDeclarationLanguageBase.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.view;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/view/ViewResponseWrapper.java b/shared/src/main/java/org/apache/myfaces/shared/view/ViewResponseWrapper.java
index 03e8938..eec8070 100644
--- a/shared/src/main/java/org/apache/myfaces/shared/view/ViewResponseWrapper.java
+++ b/shared/src/main/java/org/apache/myfaces/shared/view/ViewResponseWrapper.java
@@ -1,20 +1,20 @@
 /*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.myfaces.shared.view;
 
diff --git a/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/DelegatedFacesServlet.java b/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/DelegatedFacesServlet.java
deleted file mode 100644
index 3752e8a..0000000
--- a/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/DelegatedFacesServlet.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.myfaces.shared.webapp.webxml;
-
-public interface DelegatedFacesServlet
-{
-}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/FilterMapping.java b/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/FilterMapping.java
deleted file mode 100644
index bc2d8ec..0000000
--- a/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/FilterMapping.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.myfaces.shared.webapp.webxml;
-
-/**
- * @author Mario Ivankovits (latest modification by $Author$)
- * @version $Revision$ $Date$
- */
-public class FilterMapping
-{
-    private String _filterName;
-    private Class _filterClass;
-    private String _urlPattern;
-    private boolean _isExtensionMapping = false;
-
-    public FilterMapping(String filterName,
-                          Class filterClass,
-                          String urlPattern)
-    {
-        _filterName = filterName;
-        _filterClass = filterClass;
-        _urlPattern = urlPattern;
-        if (_urlPattern != null)
-        {
-            if (_urlPattern.startsWith("*."))
-            {
-                _isExtensionMapping = true;
-            }
-        }
-    }
-
-    public boolean isExtensionMapping()
-    {
-        return _isExtensionMapping;
-    }
-
-    public String getFilterName()
-    {
-        return _filterName;
-    }
-
-    public Class getFilterClass()
-    {
-        return _filterClass;
-    }
-
-    public String getUrlPattern()
-    {
-        return _urlPattern;
-    }
-}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/ServletMapping.java b/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/ServletMapping.java
deleted file mode 100755
index cfc629b..0000000
--- a/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/ServletMapping.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.myfaces.shared.webapp.webxml;
-
-/**
- * @author Manfred Geiler (latest modification by $Author$)
- * @version $Revision$ $Date$
- */
-public class ServletMapping
-{
-    private final String _servletName;
-    private final Class _servletClass;
-    private final String _urlPattern;
-    private final String _extension;
-    private final String _prefix;
-
-    public ServletMapping(String servletName, Class servletClass, String urlPattern)
-    {
-        _servletName = servletName;
-        _servletClass = servletClass;
-        _urlPattern = urlPattern;
-        _extension = _urlPattern != null && _urlPattern.startsWith("*.") ? _urlPattern.substring(_urlPattern
-                .indexOf('.')) : null;
-        if (_extension == null)
-        {
-            int index = _urlPattern.indexOf("/*");
-            if (index != -1)
-            {
-                _prefix = _urlPattern.substring(0, _urlPattern.indexOf("/*"));
-            }
-            else
-            {
-                _prefix = _urlPattern;
-            }
-        }
-        else
-        {
-            _prefix = null;
-        }
-    }
-
-    public boolean isExtensionMapping()
-    {
-        return _extension != null;
-    }
-
-    public String getExtension()
-    {
-        return _extension;
-    }
-
-    public String getPrefix()
-    {
-        return _prefix;
-    }
-
-    public String getServletName()
-    {
-        return _servletName;
-    }
-
-    public Class getServletClass()
-    {
-        return _servletClass;
-    }
-
-    public String getUrlPattern()
-    {
-        return _urlPattern;
-    }
-}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java b/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java
deleted file mode 100755
index 2e93c51..0000000
--- a/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXml.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.myfaces.shared.webapp.webxml;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.faces.context.ExternalContext;
-import javax.faces.webapp.FacesServlet;
-
-import org.apache.myfaces.shared.config.MyfacesConfig;
-
-/**
- * @author Manfred Geiler (latest modification by $Author$)
- * @version $Revision$ $Date$
- */
-public class WebXml
-{
-    //private static final Log log = LogFactory.getLog(WebXml.class);
-    private static final Logger log = Logger.getLogger(WebXml.class.getName());
-
-
-    private static long refreshPeriod;
-    private long parsingTime;
-
-    private Map _servlets = new HashMap();
-    private Map _servletMappings = new HashMap();
-    private Map _filters = new HashMap();
-    private Map _filterMappings = new HashMap();
-
-    private volatile List _facesServletMappings = null;
-    private volatile List _facesExtensionsFilterMappings = null;
-    
-    private String _delegateFacesServlet = null;
-    private boolean errorPagePresent = false;
-
-    void addServlet(String servletName, String servletClass)
-    {
-        if (_servlets.get(servletName) != null)
-        {
-            log.warning("Servlet " + servletName + " defined more than once, first definition will be used.");
-        }
-        else
-        {
-            _servlets.put(servletName, servletClass);
-        }
-    }
-
-    void addFilter(String filterName, String filterClass)
-    {
-        if (_filters.get(filterName) != null)
-        {
-            log.warning("Filter " + filterName + " defined more than once, first definition will be used.");
-        }
-        else
-        {
-            _filters.put(filterName, filterClass);
-        }
-    }
-
-    boolean containsServlet(String servletName)
-    {
-        return _servlets.containsKey(servletName);
-    }
-
-    boolean containsFilter(String filterName)
-    {
-        return _filters.containsKey(filterName);
-    }
-
-    void addServletMapping(String servletName, String urlPattern)
-    {
-        List mappings = (List)_servletMappings.get(servletName);
-        if (mappings == null)
-        {
-            mappings = new ArrayList();
-            _servletMappings.put(servletName, mappings);
-        }
-        mappings.add(urlPattern);
-    }
-
-    void addFilterMapping(String filterName, String urlPattern)
-    {
-        List mappings = (List)_filterMappings.get(filterName);
-        if (mappings == null)
-        {
-            mappings = new ArrayList();
-            _filterMappings.put(filterName, mappings);
-        }
-        mappings.add(urlPattern);
-    }
-
-    public List getFacesServletMappings()
-    {
-        if (_facesServletMappings != null) return _facesServletMappings;
-
-        List tempFacesServletMappings = new ArrayList();
-        for (Iterator it = _servlets.entrySet().iterator(); it.hasNext(); )
-        {
-            Map.Entry entry = (Map.Entry)it.next();
-            String servletName = (String)entry.getKey();
-            if (null == entry.getValue())
-            {
-                // the value is null in the case of jsp files listed as servlets
-                // in cactus
-                // <servlet>
-                //   <servlet-name>JspRedirector</servlet-name>
-                //   <jsp-file>/jspRedirector.jsp</jsp-file>
-                // </servlet>
-                continue;
-            }
-            Class servletClass = org.apache.myfaces.shared.util.ClassUtils.simpleClassForName((String)entry.getValue());
-            if (FacesServlet.class.isAssignableFrom(servletClass) ||
-                    DelegatedFacesServlet.class.isAssignableFrom(servletClass) ||
-                    servletClass.getName().equals(_delegateFacesServlet))
-            {
-                List urlPatterns = (List)_servletMappings.get(servletName);
-                if( urlPatterns != null )
-                {
-                    for (Iterator it2 = urlPatterns.iterator(); it2.hasNext(); )
-                    {
-                        String urlpattern = (String)it2.next();
-                        tempFacesServletMappings.add(new org.apache.myfaces.shared.webapp.webxml.ServletMapping(servletName,
-                                                                                                             servletClass,
-                                                                                                             urlpattern));
-                        if (log.isLoggable(Level.FINEST))
-                            log.finest("adding mapping for servlet + " + servletName + " urlpattern = " + urlpattern);
-                    }
-                }
-            }
-            else
-            {
-                if (log.isLoggable(Level.FINEST)) log.finest("ignoring servlet + " + servletName + " " + servletClass + " (no FacesServlet)");
-            }
-        }
-        
-        //Expose to all threads
-        _facesServletMappings = tempFacesServletMappings;
-        
-        return _facesServletMappings;
-    }
-
-    /**
-     * returns a list of {@see #org.apache.myfaces.shared.webapp.webxml.FilterMapping}s representing a
-     * extensions filter entry
-     */
-    public List getFacesExtensionsFilterMappings()
-    {
-        if (_facesExtensionsFilterMappings != null) return _facesExtensionsFilterMappings;
-
-        List tempExtensionsFilterMappings = new ArrayList();
-        for (Iterator it = _filters.entrySet().iterator(); it.hasNext(); )
-        {
-            Map.Entry entry = (Map.Entry)it.next();
-            String filterName = (String)entry.getKey();
-            String filterClassName = (String)entry.getValue();
-            
-            if (!"org.apache.myfaces.component.html.util.ExtensionsFilter".equals(filterClassName) &&
-                !"org.apache.myfaces.webapp.filter.ExtensionsFilter".equals(filterClassName))
-            {
-                // not an extensions filter
-                continue;
-            }
-            
-            Class filterClass = org.apache.myfaces.shared.util.ClassUtils.simpleClassForName(filterClassName);
-            List urlPatterns = (List)_filterMappings.get(filterName);
-            if( urlPatterns != null )
-            {
-                for (Iterator it2 = urlPatterns.iterator(); it2.hasNext(); )
-                {
-                    String urlpattern = (String)it2.next();
-                    tempExtensionsFilterMappings.add(new org.apache.myfaces.shared.webapp.webxml.FilterMapping(
-                        filterName, filterClass, urlpattern));
-                    if (log.isLoggable(Level.FINEST))
-                        log.finest("adding mapping for filter + " + filterName + " urlpattern = " + urlpattern);
-                }
-            }
-        }
-        
-        //Expose to all threads
-        _facesExtensionsFilterMappings = tempExtensionsFilterMappings;
-        
-        return _facesExtensionsFilterMappings;
-    }
-
-    protected void setParsingTime(long parsingTime)
-    {
-        this.parsingTime = parsingTime;
-    }
-    
-    private void setDelegateFacesServlet(String delegateFacesServlet)
-    {
-        this._delegateFacesServlet = delegateFacesServlet;
-    }
-    
-    /**
-     * Sets if, the web.xml contains an error-page entry
-     * @param errorPagePresent
-     */
-    public void setErrorPagePresent(boolean errorPagePresent)
-    {
-        this.errorPagePresent = errorPagePresent;
-    }
-    
-    /**
-     * Determines, if the web.xml contains an error-page entry
-     * @return
-     */
-    public boolean isErrorPagePresent()
-    {
-        return errorPagePresent;
-    }
-
-    protected boolean isOld(ExternalContext context)
-    {
-        if (refreshPeriod > 0) {
-            long ttl = this.parsingTime + refreshPeriod;
-            if (System.currentTimeMillis() > ttl) {
-                long lastModified = WebXmlParser.getWebXmlLastModified(context);
-                return lastModified == 0 || lastModified > ttl;
-            }
-        }
-        return false;
-    }
-
-    private static final String WEB_XML_ATTR = WebXml.class.getName();
-    public static WebXml getWebXml(ExternalContext context)
-    {
-        WebXml webXml = (WebXml)context.getApplicationMap().get(WEB_XML_ATTR);
-        if (webXml == null)
-        {
-            init(context);
-            webXml = (WebXml)context.getApplicationMap().get(WEB_XML_ATTR);
-        }
-        return webXml;
-    }
-
-    /**
-     * should be called when initialising Servlet
-     * @param context
-     */
-    public static void init(ExternalContext context)
-    {
-        WebXmlParser parser = new WebXmlParser(context);
-        WebXml webXml = parser.parse();
-        context.getApplicationMap().put(WEB_XML_ATTR, webXml);
-        MyfacesConfig mfconfig = MyfacesConfig.getCurrentInstance(context);
-        long configRefreshPeriod = mfconfig.getConfigRefreshPeriod();
-        webXml.setParsingTime(System.currentTimeMillis());
-        webXml.setDelegateFacesServlet(mfconfig.getDelegateFacesServlet());
-        refreshPeriod = (configRefreshPeriod * 1000);
-    }
-
-    public static void update(ExternalContext context)
-    {
-        if (getWebXml(context).isOld(context)){
-            WebXml.init(context);
-        }
-    }
-
-}
diff --git a/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXmlParser.java b/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXmlParser.java
deleted file mode 100755
index ff40f15..0000000
--- a/shared/src/main/java/org/apache/myfaces/shared/webapp/webxml/WebXmlParser.java
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- * 
- *  http://www.apache.org/licenses/LICENSE-2.0
- * 
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.apache.myfaces.shared.webapp.webxml;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.logging.Level;
-import java.util.logging.Logger;
-
-import javax.faces.FacesException;
-import javax.faces.context.ExternalContext;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-
-import org.apache.myfaces.shared.util.ClassUtils;
-import org.apache.myfaces.shared.util.xml.MyFacesErrorHandler;
-import org.apache.myfaces.shared.util.xml.XmlUtils;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-import org.w3c.dom.NodeList;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
-
-/**
- * @author Manfred Geiler (latest modification by $Author$)
- * @version $Revision$ $Date$
- */
-public class WebXmlParser
-{
-    //private static final Log log = LogFactory.getLog(WebXmlParser.class);
-    private static final Logger log = Logger.getLogger(WebXmlParser.class.getName());
-
-    /*
-    private static final String JAXP_SCHEMA_LANGUAGE =
-        "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
-    private static final String W3C_XML_SCHEMA =
-        "http://www.w3.org/2001/XMLSchema";
-        */
-
-    private static final String WEB_XML_PATH = "/WEB-INF/web.xml";
-
-    private static final String WEB_APP_2_2_J2EE_SYSTEM_ID = "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd";
-    private static final String WEB_APP_2_2_SYSTEM_ID = "http://java.sun.com/dtd/web-app_2_2.dtd";
-    private static final String WEB_APP_2_2_RESOURCE  = "javax/servlet/resources/web-app_2_2.dtd";
-
-    private static final String WEB_APP_2_3_SYSTEM_ID = "http://java.sun.com/dtd/web-app_2_3.dtd";
-    private static final String WEB_APP_2_3_RESOURCE  = "javax/servlet/resources/web-app_2_3.dtd";
-    
-    private ExternalContext _context;
-    private org.apache.myfaces.shared.webapp.webxml.WebXml _webXml;
-
-    public WebXmlParser(ExternalContext context)
-    {
-        _context = context;
-    }
-
-    public WebXml parse()
-    {
-        _webXml = new WebXml();
-
-        try
-        {
-            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
-            dbf.setIgnoringElementContentWhitespace(true);
-            dbf.setIgnoringComments(true);
-            dbf.setNamespaceAware(true);
-            dbf.setValidating(false);
-//            dbf.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
-
-            DocumentBuilder db = dbf.newDocumentBuilder();
-            db.setEntityResolver(new _EntityResolver());
-            db.setErrorHandler(new MyFacesErrorHandler(log));
-
-            InputSource is = createContextInputSource(null, WEB_XML_PATH);
-
-            if(is==null)
-            {
-                URL url = _context.getResource(WEB_XML_PATH);
-                log.fine("No web-xml found at : "+(url==null?" null ":url.toString()));
-                return _webXml;
-            }
-
-            Document document = db.parse(is);
-
-            Element webAppElem = document.getDocumentElement();
-            if (webAppElem == null ||
-                !webAppElem.getNodeName().equals("web-app"))
-            {
-                throw new FacesException("No valid web-app root element found!");
-            }
-
-            readWebApp(webAppElem);
-            
-            return _webXml;
-        }
-        catch (Exception e)
-        {
-            log.log(Level.SEVERE, "Unable to parse web.xml", e);
-            throw new FacesException(e);
-        }
-    }
-
-    public static long getWebXmlLastModified(ExternalContext context)
-    {
-        try {
-            URL url = context.getResource(WEB_XML_PATH);
-            if (url != null)
-                return url.openConnection().getLastModified();
-        } catch (IOException e) {
-            log.log(Level.SEVERE, "Could not find web.xml in path " + WEB_XML_PATH);
-        }
-        return 0L;
-    }
-
-
-    private InputSource createContextInputSource(String publicId, String systemId)
-    {
-        InputStream inStream = _context.getResourceAsStream(systemId);
-        if (inStream == null)
-        {
-            // there is no such entity
-            return null;
-        }
-        InputSource is = new InputSource(inStream);
-        is.setPublicId(publicId);
-        is.setSystemId(systemId);
-        //the next line was removed - encoding should be determined automatically out of the inputStream
-        //DEFAULT_ENCODING was ISO-8859-1
-        //is.setEncoding(DEFAULT_ENCODING);
-        return is;
-    }
-
-    private InputSource createClassloaderInputSource(String publicId, String systemId)
-    {
-        InputStream inStream = ClassUtils.getResourceAsStream(systemId);
-        if (inStream == null)
-        {
-            // there is no such entity
-            return null;
-        }
-        InputSource is = new InputSource(inStream);
-        is.setPublicId(publicId);
-        is.setSystemId(systemId);
-        //the next line was removed - encoding should be determined automatically out of the inputStream
-        //encoding should be determined automatically out of the inputStream
-        //DEFAULT_ENCODING was ISO-8859-1
-        //is.setEncoding(DEFAULT_ENCODING);
-        return is;
-    }
-
-    private class _EntityResolver implements EntityResolver
-    {
-        public InputSource resolveEntity(String publicId, String systemId) throws IOException
-        {
-            if (systemId == null)
-            {
-                throw new UnsupportedOperationException("systemId must not be null");
-            }
-
-            if (systemId.equals(WebXmlParser.WEB_APP_2_2_SYSTEM_ID) ||
-                systemId.equals(WebXmlParser.WEB_APP_2_2_J2EE_SYSTEM_ID))
-            {
-                //Load DTD from servlet.jar
-                return createClassloaderInputSource(publicId, WebXmlParser.WEB_APP_2_2_RESOURCE);
-            }
-            else if (systemId.equals(WebXmlParser.WEB_APP_2_3_SYSTEM_ID))
-            {
-                //Load DTD from servlet.jar
-                return createClassloaderInputSource(publicId, WebXmlParser.WEB_APP_2_3_RESOURCE);
-            }
-            else
-            {
-                //Load additional entities from web context
-                return createContextInputSource(publicId, systemId);
-            }
-        }
-
-    }
-
-
-    private void readWebApp(Element webAppElem)
-    {
-        NodeList nodeList = webAppElem.getChildNodes();
-        for (int i = 0, len = nodeList.getLength(); i < len; i++)
-        {
-            Node n = nodeList.item(i);
-            if (n.getNodeType() == Node.ELEMENT_NODE)
-            {
-                if (n.getNodeName().equals("servlet"))
-                {
-                    readServlet((Element)n);
-                }
-                if (n.getNodeName().equals("servlet-mapping"))
-                {
-                    readServletMapping((Element)n);
-                }
-                if (n.getNodeName().equals("filter"))
-                {
-                    readFilter((Element)n);
-                }
-                if (n.getNodeName().equals("filter-mapping"))
-                {
-                    readFilterMapping((Element)n);
-                }
-                if (n.getNodeName().equals("error-page"))
-                {
-                    _webXml.setErrorPagePresent(true);
-                }
-            }
-            else
-            {
-                if (log.isLoggable(Level.FINE)) log.fine("Ignored node '" + n.getNodeName() + "' of type " + n.getNodeType());
-            }
-        }
-    }
-
-    private void readServlet(Element servletElem)
-    {
-        String servletName = null;
-        String servletClass = null;
-        NodeList nodeList = servletElem.getChildNodes();
-        for (int i = 0, len = nodeList.getLength(); i < len; i++)
-        {
-            Node n = nodeList.item(i);
-            if (n.getNodeType() == Node.ELEMENT_NODE)
-            {
-                if (n.getNodeName().equals("servlet-name"))
-                {
-                    servletName = XmlUtils.getElementText((Element)n);
-                }
-                else if (n.getNodeName().equals("servlet-class"))
-                {
-                    servletClass = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n).trim();
-                }
-                else if (n.getNodeName().equals("description") || n.getNodeName().equals("load-on-startup") || n.getNodeName().equals("init-param"))
-                {
-                    //ignore
-                }
-                else
-                {
-                    if (log.isLoggable(Level.FINE)) log.fine("Ignored element '" + n.getNodeName() + "' as child of '" + servletElem.getNodeName() + "'.");
-                }
-            }
-            else
-            {
-                if (log.isLoggable(Level.FINE)) log.fine("Ignored node '" + n.getNodeName() + "' of type " + n.getNodeType());
-            }
-        }
-        _webXml.addServlet(servletName, servletClass);
-    }
-
-
-    private void readServletMapping(Element servletMappingElem)
-    {
-        String servletName = null;
-        String urlPattern = null;
-        NodeList nodeList = servletMappingElem.getChildNodes();
-        for (int i = 0, len = nodeList.getLength(); i < len; i++)
-        {
-            Node n = nodeList.item(i);
-            if (n.getNodeType() == Node.ELEMENT_NODE)
-            {
-                if (n.getNodeName().equals("servlet-name"))
-                {
-                    servletName = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n);
-                }
-                else if (n.getNodeName().equals("url-pattern"))
-                {
-                    urlPattern = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n).trim();
-                }
-                else
-                {
-                    if (log.isLoggable(Level.FINE)) log.fine("Ignored element '" + n.getNodeName() + "' as child of '" + servletMappingElem.getNodeName() + "'.");
-                }
-            }
-            else
-            {
-                if (log.isLoggable(Level.FINE)) log.fine("Ignored node '" + n.getNodeName() + "' of type " + n.getNodeType());
-            }
-        }
-        urlPattern = urlPattern.trim();
-        _webXml.addServletMapping(servletName, urlPattern);
-    }
-
-    private void readFilter(Element filterElem)
-    {
-        String filterName = null;
-        String filterClass = null;
-        NodeList nodeList = filterElem.getChildNodes();
-        for (int i = 0, len = nodeList.getLength(); i < len; i++)
-        {
-            Node n = nodeList.item(i);
-            if (n.getNodeType() == Node.ELEMENT_NODE)
-            {
-                if (n.getNodeName().equals("filter-name"))
-                {
-                    filterName = XmlUtils.getElementText((Element)n).trim();
-                }
-                else if (n.getNodeName().equals("filter-class"))
-                {
-                    filterClass = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n).trim();
-                }
-                else if (n.getNodeName().equals("description") || n.getNodeName().equals("init-param"))
-                {
-                    //ignore
-                }
-                else
-                {
-                    if (log.isLoggable(Level.FINE)) log.fine("Ignored element '" + n.getNodeName() + "' as child of '" + filterElem.getNodeName() + "'.");
-                }
-            }
-            else
-            {
-                if (log.isLoggable(Level.FINE)) log.fine("Ignored node '" + n.getNodeName() + "' of type " + n.getNodeType());
-            }
-        }
-        _webXml.addFilter(filterName, filterClass);
-    }
-
-
-    private void readFilterMapping(Element filterMappingElem)
-    {
-        String filterName = null;
-        String urlPattern = null;
-        NodeList nodeList = filterMappingElem.getChildNodes();
-        for (int i = 0, len = nodeList.getLength(); i < len; i++)
-        {
-            Node n = nodeList.item(i);
-            if (n.getNodeType() == Node.ELEMENT_NODE)
-            {
-                if (n.getNodeName().equals("filter-name"))
-                {
-                    filterName = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n).trim();
-                }
-                else if (n.getNodeName().equals("url-pattern"))
-                {
-                    urlPattern = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n).trim();
-                }
-                else if (n.getNodeName().equals("servlet-name"))
-                {
-                    // we are not interested in servlet-name based mapping - for now
-                }
-                else
-                {
-                    if (log.isLoggable(Level.FINE)) log.fine("Ignored element '" + n.getNodeName() + "' as child of '" + filterMappingElem.getNodeName() + "'.");
-                }
-            }
-            else
-            {
-                if (log.isLoggable(Level.FINE)) log.fine("Ignored node '" + n.getNodeName() + "' of type " + n.getNodeType());
-            }
-        }
-        _webXml.addFilterMapping(filterName, urlPattern);
-    }
-}
diff --git a/shared/src/test/java/org/apache/myfaces/shared/webapp/webxml/ServletMappingTest.java b/shared/src/test/java/org/apache/myfaces/shared/webapp/webxml/ServletMappingTest.java
deleted file mode 100644
index d5c3861..0000000
--- a/shared/src/test/java/org/apache/myfaces/shared/webapp/webxml/ServletMappingTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.shared.webapp.webxml;
-
-import junit.framework.TestCase;
-
-/**
- * @author Mathias Broekelmann (latest modification by $Author$)
- * @version $Revision$ $Date$
- */
-public class ServletMappingTest extends TestCase
-{
-
-    /**
-     * Test method for
-     * {@link org.apache.myfaces.shared.webapp.webxml.ServletMapping#ServletMapping(java.lang.String, java.lang.Class, java.lang.String)}.
-     */
-    public void testExtensionServletMapping()
-    {
-        ServletMapping mapping = new ServletMapping("xxx", Object.class, "*.faces");
-        assertTrue(mapping.isExtensionMapping());
-        assertEquals(".faces", mapping.getExtension());
-        assertEquals("*.faces", mapping.getUrlPattern());
-    }
-
-    /**
-     * Test method for
-     * {@link org.apache.myfaces.shared.webapp.webxml.ServletMapping#ServletMapping(java.lang.String, java.lang.Class, java.lang.String)}.
-     */
-    public void testPrefixServletMapping()
-    {
-        ServletMapping mapping = new ServletMapping("xxx", Object.class, "/faces/*");
-        assertFalse(mapping.isExtensionMapping());
-        assertEquals("/faces/*", mapping.getUrlPattern());
-        assertEquals("/faces", mapping.getPrefix());
-    }
-}

-- 
To stop receiving notification emails like this one, please contact
deki@apache.org.

[myfaces] 05/05: rename shared-impl to shared, configure pom.xml to use as internal module using shade plugin, and move non changeable classes to impl

Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

deki pushed a commit to branch refactor_shared_2_1_x
in repository https://gitbox.apache.org/repos/asf/myfaces.git

commit 9d564d58c199c821fae60e4ee722e4eec3c71713
Author: Leonardo Uribe <lu...@apache.org>
AuthorDate: Sat Jul 23 16:09:56 2011 +0000

    rename shared-impl to shared, configure pom.xml to use as internal module using shade plugin, and move non changeable classes to impl
---
 impl/pom.xml                                       |  52 ++-
 .../myfaces/application/ApplicationImpl.java       |   2 +-
 .../application/DefaultResourceHandlerSupport.java |   8 +-
 .../myfaces/application/NavigationHandlerImpl.java |   4 +-
 .../myfaces/application/ResourceHandlerImpl.java   |  18 +-
 .../myfaces/application/TreeStructureManager.java  |   2 +-
 .../myfaces/application/ViewHandlerImpl.java       |  10 +-
 .../application/jsp/JspStateManagerImpl.java       |   4 +-
 .../application/jsp/JspViewHandlerImpl.java        |  10 +-
 .../jsp/ServletViewResponseWrapper.java            |   2 +-
 .../config/ConfigFilesXmlValidationUtils.java      |   2 +-
 .../config/DefaultFacesConfigResourceProvider.java |   2 +-
 .../config/DefaultFacesConfigurationProvider.java  |   4 +-
 .../myfaces/config/FacesConfigValidator.java       |   2 +-
 .../apache/myfaces/config/FacesConfigurator.java   |  12 +-
 .../org/apache/myfaces/config/LogMetaInfUtils.java |   2 +-
 .../apache/myfaces/config/ManagedBeanBuilder.java  |   2 +-
 .../annotation/DefaultAnnotationProvider.java      |   2 +-
 .../DefaultLifecycleProviderFactory.java           |   2 +-
 .../annotation/NoAnnotationLifecyleProvider.java   |   2 +-
 .../NoInjectionAnnotationLifecycleProvider.java    |   2 +-
 .../Tomcat7AnnotationLifecycleProvider.java        |   2 +-
 .../TomcatAnnotationLifecycleProvider.java         |   2 +-
 .../myfaces/config/annotation/_PackageInfo.java    |   2 +-
 .../config/impl/FacesConfigEntityResolver.java     |   2 +-
 .../DigesterFacesConfigUnmarshallerImpl.java       |   2 +-
 .../config/impl/digester/elements/ManagedBean.java |   2 +-
 .../context/ExceptionHandlerFactoryImpl.java       |   6 +-
 .../myfaces/context/FacesContextFactoryImpl.java   |   2 +-
 .../MyFacesExceptionHandlerWrapperImpl.java        |   2 +-
 .../myfaces/context/servlet/FacesContextImpl.java  |   2 +-
 .../context/servlet/PartialViewContextImpl.java    |   2 +-
 .../servlet/ServletExternalContextImpl.java        |   2 +-
 .../apache/myfaces/context/servlet/SessionMap.java |   2 +-
 ...ableResolverToApplicationELResolverAdapter.java |   2 +-
 .../el/convert/ValueBindingToValueExpression.java  |   2 +-
 .../el/convert/ValueExpressionToValueBinding.java  |   2 +-
 .../lifecycle/DefaultRestoreViewSupport.java       |   6 +-
 .../apache/myfaces/lifecycle/LifecycleImpl.java    |   2 +-
 .../apache/myfaces/renderkit/ErrorPageWriter.java  |   6 +-
 .../renderkit/ServerSideStateCacheImpl.java        |   6 +-
 .../myfaces/renderkit/html/HtmlBodyRenderer.java   |   2 +-
 .../myfaces/renderkit/html/HtmlButtonRenderer.java |   2 +-
 .../renderkit/html/HtmlCheckboxRenderer.java       |   2 +-
 .../html/HtmlCompositeComponentRenderer.java       |   2 +-
 .../renderkit/html/HtmlCompositeFacetRenderer.java |   2 +-
 .../myfaces/renderkit/html/HtmlFormRenderer.java   |   8 +-
 .../myfaces/renderkit/html/HtmlFormatRenderer.java |  10 +-
 .../myfaces/renderkit/html/HtmlGridRenderer.java   |   2 +-
 .../myfaces/renderkit/html/HtmlGroupRenderer.java  |   2 +-
 .../myfaces/renderkit/html/HtmlHeadRenderer.java   |   4 +-
 .../myfaces/renderkit/html/HtmlHiddenRenderer.java |  10 +-
 .../myfaces/renderkit/html/HtmlImageRenderer.java  |   2 +-
 .../myfaces/renderkit/html/HtmlLabelRenderer.java  |  20 +-
 .../myfaces/renderkit/html/HtmlLinkRenderer.java   |   2 +-
 .../renderkit/html/HtmlListboxRenderer.java        |   2 +-
 .../myfaces/renderkit/html/HtmlMenuRenderer.java   |   2 +-
 .../renderkit/html/HtmlMessageRenderer.java        |   4 +-
 .../renderkit/html/HtmlMessagesRenderer.java       |   4 +-
 .../html/HtmlOutcomeTargetButtonRenderer.java      |   2 +-
 .../myfaces/renderkit/html/HtmlRadioRenderer.java  |   2 +-
 .../myfaces/renderkit/html/HtmlRenderKitImpl.java  |   6 +-
 .../renderkit/html/HtmlResponseStateManager.java   |  12 +-
 .../myfaces/renderkit/html/HtmlScriptRenderer.java |   8 +-
 .../myfaces/renderkit/html/HtmlSecretRenderer.java |   2 +-
 .../renderkit/html/HtmlStylesheetRenderer.java     |   8 +-
 .../myfaces/renderkit/html/HtmlTableRenderer.java  |   2 +-
 .../myfaces/renderkit/html/HtmlTextRenderer.java   |   2 +-
 .../renderkit/html/HtmlTextareaRenderer.java       |   2 +-
 .../InternalClassLoaderResourceLoader.java         |  24 +-
 .../webapp/webxml/DelegatedFacesServlet.java}      |  55 ++-
 .../shared_impl/webapp/webxml/FilterMapping.java   |  67 ++++
 .../shared_impl/webapp/webxml/ServletMapping.java  |  87 +++++
 .../myfaces/shared_impl/webapp/webxml/WebXml.java  | 282 ++++++++++++++++
 .../shared_impl/webapp/webxml/WebXmlParser.java    | 373 +++++++++++++++++++++
 .../myfaces/spi/FactoryFinderProviderFactory.java  |   2 +-
 .../myfaces/spi/ServiceProviderFinderFactory.java  |   2 +-
 .../org/apache/myfaces/spi/WebConfigProvider.java  |   2 +-
 .../spi/impl/DefaultAnnotationProviderFactory.java |   2 +-
 ...efaultFaceletConfigResourceProviderFactory.java |   2 +-
 .../DefaultFacesConfigResourceProviderFactory.java |   2 +-
 .../DefaultFacesConfigurationMergerFactory.java    |   2 +-
 .../DefaultFacesConfigurationProviderFactory.java  |   2 +-
 .../spi/impl/DefaultServiceProviderFinder.java     |   2 +-
 .../spi/impl/DefaultWebConfigProviderFactory.java  |   2 +-
 .../java/org/apache/myfaces/spi/impl/SpiUtils.java |   2 +-
 .../myfaces/taglib/core/ConvertDateTimeTag.java    |   4 +-
 .../myfaces/taglib/core/ConvertNumberTag.java      |   2 +-
 .../taglib/core/DelegateActionListener.java        |   2 +-
 .../myfaces/taglib/core/GenericListenerTag.java    |   2 +-
 .../apache/myfaces/taglib/core/LoadBundleTag.java  |   2 +-
 .../org/apache/myfaces/taglib/core/ParamTag.java   |   2 +-
 .../myfaces/taglib/core/PhaseListenerTag.java      |   2 +-
 .../apache/myfaces/taglib/core/SelectItemTag.java  |   2 +-
 .../apache/myfaces/taglib/core/VerbatimTag.java    |   4 +-
 .../org/apache/myfaces/taglib/core/ViewTag.java    |   2 +-
 .../org/apache/myfaces/util/ContainerUtils.java    |   2 +-
 .../DefaultFaceletsStateManagementHelper.java      |   4 +-
 .../DefaultFaceletsStateManagementStrategy.java    |   6 +-
 .../facelets/FaceletViewDeclarationLanguage.java   |  14 +-
 .../compiler/BodyEndElementInstruction.java        |   2 +-
 .../DefaultFaceletConfigResourceProvider.java      |   2 +-
 .../view/facelets/compiler/SAXCompiler.java        |   2 +-
 .../view/facelets/compiler/TagLibraryConfig.java   |   4 +-
 .../myfaces/view/facelets/compiler/TextUnit.java   |   2 +-
 .../facelets/impl/FaceletCacheFactoryImpl.java     |   2 +-
 .../impl/FaceletCompositionContextImpl.java        |   2 +-
 .../myfaces/view/facelets/tag/MetaRulesetImpl.java |   2 +-
 .../tag/composite/AttachedObjectTargetImpl.java    |   4 +-
 .../ClientBehaviorAttachedObjectTargetImpl.java    |   4 +-
 .../tag/composite/CompositeResourceLibrary.java    |   6 +-
 .../view/facelets/tag/jsf/ComponentSupport.java    |   2 +-
 .../tag/jsf/ValidatorTagHandlerDelegate.java       |   2 +-
 .../tag/jsf/core/ActionListenerHandler.java        |   2 +-
 .../view/facelets/tag/jsf/core/AjaxHandler.java    |   4 +-
 .../facelets/tag/jsf/core/LoadBundleHandler.java   |   2 +-
 .../facelets/tag/jsf/core/SelectItemHandler.java   |   2 +-
 .../view/facelets/tag/ui/IncludeHandler.java       |   2 +-
 .../myfaces/view/facelets/util/Classpath.java      |   2 +-
 .../myfaces/view/facelets/util/ReflectionUtil.java |   4 +-
 .../view/jsp/JspViewDeclarationLanguage.java       |   2 +-
 .../myfaces/webapp/AbstractFacesInitializer.java   |   6 +-
 .../myfaces/webapp/FacesInitializerFactory.java    |   2 +-
 .../webapp/StartupServletContextListener.java      |   2 +-
 .../myfaces/application/StateManagerImplTest.java  |   4 +-
 .../application/jsp/JspStateManagerImplTest.java   |   2 +-
 .../application/jsp/JspViewHandlerImplTest.java    |   4 +-
 .../context/PartialResponseWriterImplTest.java     |   2 +-
 .../renderkit/html/HtmlButtonRendererTest.java     |   2 +-
 .../renderkit/html/HtmlEscapeRendererTest.java     |   2 +-
 .../renderkit/html/HtmlFormRendererTest.java       |   2 +-
 .../renderkit/html/HtmlLinkRendererTest.java       |   2 +-
 .../html/HtmlOutcomeTargetButtonRendererTest.java  |   4 +-
 .../behavior/AbstractClientBehaviorTestCase.java   |   4 +-
 .../HtmlBodyClientBehaviorRendererTest.java        |   6 +-
 .../behavior/HtmlClientEventAttributesUtil.java    |   6 +-
 ...tmlCommandButtonClientBehaviorRendererTest.java |   6 +-
 .../HtmlCommandLinkClientBehaviorRendererTest.java |   6 +-
 ...comeTargetButtonClientBehaviorRendererTest.java |   6 +-
 ...utcomeTargetLinkClientBehaviorRendererTest.java |   6 +-
 .../HtmlOutputLabelClientBehaviorRendererTest.java |   6 +-
 .../HtmlOutputLinkClientBehaviorRendererTest.java  |   6 +-
 .../myfaces/renderkits/OwnRenderkitTest.java       |   2 +-
 .../myfaces/test/AbstractClassElementTestCase.java |   2 +-
 .../facelets/FaceletMultipleRequestsTestCase.java  |   4 +-
 .../myfaces/view/facelets/FaceletTestCase.java     |   4 +-
 .../StateManagerWithFaceletsClientSideTest.java    |   4 +-
 .../facelets/StateManagerWithFaceletsTest.java     |   4 +-
 .../view/facelets/compiler/TagLibraryTestCase.java |   2 +-
 .../facelets/mock/MockResourceHandlerSupport.java  |   4 +-
 .../tag/jsf/core/ViewMetadataTestCase.java         |   4 +-
 .../view/facelets/tag/jstl/core/CifTestCase.java   |   2 +-
 152 files changed, 1131 insertions(+), 333 deletions(-)

diff --git a/impl/pom.xml b/impl/pom.xml
index 4b5d74f..db7abc0 100644
--- a/impl/pom.xml
+++ b/impl/pom.xml
@@ -80,6 +80,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                         </configuration>
                         <goals>
@@ -112,6 +113,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                             <params>
                                 <shortname>f</shortname>
@@ -162,6 +164,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                             <params>
                                 <shortname>f</shortname>
@@ -185,6 +188,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                             <params>
                                <shortname>h</shortname>
@@ -208,6 +212,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                             <params>
                                <shortname>c</shortname>
@@ -231,6 +236,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                             <params>
                                <shortname>ui</shortname>
@@ -254,6 +260,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                             <params>
                                <shortname>composite</shortname>
@@ -277,6 +284,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                             <params>
                                 <shortname>f</shortname>
@@ -299,6 +307,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                             <params>
                                <shortname>h</shortname>
@@ -320,6 +329,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                             <params>
                                <shortname>c</shortname>
@@ -341,6 +351,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                             <params>
                                <shortname>ui</shortname>
@@ -362,6 +373,7 @@
                             <modelIds>
                                 <modelId>myfaces-api</modelId>
                                 <modelId>myfaces-impl</modelId>
+                                <modelId>myfaces-impl-shared</modelId>
                             </modelIds>
                             <params>
                                <shortname>composite</shortname>
@@ -485,6 +497,7 @@
                     <artifactSet>
                         <includes>
                             <include>org.apache.myfaces.core.internal:myfaces-impl-ee6</include>
+                            <include>org.apache.myfaces.core.internal:myfaces-impl-shared</include>
                         </includes>
                     </artifactSet>
                     <filters>
@@ -575,16 +588,7 @@
 
 
     <profiles>
-
-        <!--
-            This profile use a shared dependency rather than unpack the
-            code directly. The ideal is that this profile is active when the
-            version of this library is snapshot, but unfortunately there is
-            no way to activate it (see http://jira.codehaus.org/browse/MNG-3826).
-            Existing problems on maven 2.0.x architecture makes impossible do it.
-            For now the solution is trigger it manually using the property
-            -Ddev=true
-        -->
+        <!-- 
         <profile>
             <id>add-shared-dependency</id>
             <activation>
@@ -597,12 +601,11 @@
                 <dependency>
                     <groupId>org.apache.myfaces.shared</groupId>
                     <artifactId>myfaces-shared-impl</artifactId>
-                    <scope>compile</scope>  <!-- otherwise it is scope=provided -->
+                    <scope>compile</scope>
                 </dependency>
             </dependencies>
         </profile>
 
-        <!-- standard unpacking of shared-impl -->
         <profile>
             <id>unpack-shared</id>
             <activation>
@@ -613,11 +616,6 @@
             <build>
                 <plugins>
                     <plugin>
-                        <!--
-                          - The shared-impl project generates a modified version of the "shared" module
-                          - source and classes. The result is a jar full of files in the "shared_impl"
-                          - package that we can merge into the jar for this project.
-                        -->
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-dependency-plugin</artifactId>
                         <version>2.0</version>
@@ -635,7 +633,6 @@
                                             <groupId>org.apache.myfaces.shared</groupId>
                                             <artifactId>myfaces-shared-impl</artifactId>
                                             <version>${myfaces-shared.version}</version>
-                                            <!-- we need to include META-INF/resources and META-INF/internal-resources -->
                                             <excludes>META-INF/DEPENDENCIES,META-INF/LICENSE,META-INF/NOTICE,META-INF/MANIFEST.MF</excludes>
                                         </artifactItem>
                                     </artifactItems>
@@ -677,10 +674,6 @@
                                       <version>${project.version}</version>
                                     </artifactItem>
                                   </artifactItems>
-                                  <!-- Just include the .class files in org/** and the META-INF/services directory -->
-                                  <!-- <includes>org/**,META-INF/services/**</includes> -->
-                                  <!-- Only need copy .class, because maven shade plugin will do it at package
-                                       and maven-bundle-plugin requires it to include this entry on the manifest -->
                                   <includes>org/**</includes>
                                   <outputDirectory>${project.build.directory}/classes</outputDirectory>
                                 </configuration>
@@ -690,11 +683,6 @@
                     </plugin>
                     
                     <plugin>
-                        <!--
-                            Add the unpacked shared sources directory as source directory into the pom datastructure,
-                            so that the -source jar includes them too; every .class file in the jar should have its
-                            source in the -source jar.
-                        -->
                         <groupId>org.codehaus.mojo</groupId>
                         <artifactId>build-helper-maven-plugin</artifactId>
                         <version>1.0</version>
@@ -717,6 +705,7 @@
                 </plugins>
             </build>
         </profile>
+        -->
 
         <!--
           - Whenever the full website is generated, the command
@@ -742,6 +731,7 @@
                                     <modelIds>
                                         <modelId>myfaces-api</modelId>
                                         <modelId>myfaces-impl</modelId>
+                                        <modelId>myfaces-impl-shared</modelId>
                                     </modelIds>
                                     <taglibs>
                                         <f>http://java.sun.com/jsf/core</f>
@@ -762,6 +752,7 @@
                                     <modelIds>
                                         <modelId>myfaces-api</modelId>
                                         <modelId>myfaces-impl</modelId>
+                                        <modelId>myfaces-impl-shared</modelId>
                                     </modelIds>
                                 </configuration>
                                 <goals>
@@ -837,6 +828,7 @@
                                     <modelIds>
                                         <modelId>myfaces-api</modelId>
                                         <modelId>myfaces-impl</modelId>
+                                        <modelId>myfaces-impl-shared</modelId>
                                     </modelIds>
                                     <taglibs>
                                         <f>http://java.sun.com/jsf/core</f>
@@ -1036,10 +1028,16 @@
         </dependency>
 
         <!-- this dependency will be packed together with the main artifact of this pom -->
+        <!-- 
         <dependency>
             <groupId>org.apache.myfaces.shared</groupId>
             <artifactId>myfaces-shared-impl</artifactId>
         </dependency>
+         -->
+        <dependency>
+            <groupId>org.apache.myfaces.core.internal</groupId>
+            <artifactId>myfaces-impl-shared</artifactId>
+        </dependency>
 
         <!-- maven-shade-plugin will exclude this dependency automatically -->
         <dependency>
diff --git a/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java b/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
index 5f48602..1c77899 100755
--- a/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
@@ -102,7 +102,7 @@ import org.apache.myfaces.el.unified.ResolverBuilderForFaces;
 import org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver;
 import org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.Scope;
 import org.apache.myfaces.lifecycle.LifecycleImpl;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.view.facelets.el.ELText;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/application/DefaultResourceHandlerSupport.java b/impl/src/main/java/org/apache/myfaces/application/DefaultResourceHandlerSupport.java
index d871d86..b37dadb 100644
--- a/impl/src/main/java/org/apache/myfaces/application/DefaultResourceHandlerSupport.java
+++ b/impl/src/main/java/org/apache/myfaces/application/DefaultResourceHandlerSupport.java
@@ -22,10 +22,10 @@ import javax.faces.application.ProjectStage;
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.resource.InternalClassLoaderResourceLoader;
-import org.apache.myfaces.shared_impl.resource.BaseResourceHandlerSupport;
-import org.apache.myfaces.shared_impl.resource.ClassLoaderResourceLoader;
-import org.apache.myfaces.shared_impl.resource.ExternalContextResourceLoader;
-import org.apache.myfaces.shared_impl.resource.ResourceLoader;
+import org.apache.myfaces.shared.resource.BaseResourceHandlerSupport;
+import org.apache.myfaces.shared.resource.ClassLoaderResourceLoader;
+import org.apache.myfaces.shared.resource.ExternalContextResourceLoader;
+import org.apache.myfaces.shared.resource.ResourceLoader;
 
 /**
  * A ResourceHandlerSupport implementation for use with standard Java Servlet engines,
diff --git a/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java b/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java
index 508ee02..d5b9f0d 100755
--- a/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java
@@ -51,8 +51,8 @@ import javax.faces.view.ViewMetadata;
 
 import org.apache.myfaces.config.RuntimeConfig;
 import org.apache.myfaces.config.element.NavigationRule;
-import org.apache.myfaces.shared_impl.util.HashMapUtils;
-import org.apache.myfaces.shared_impl.util.StringUtils;
+import org.apache.myfaces.shared.util.StringUtils;
+import org.apache.myfaces.shared.util.HashMapUtils;
 import org.apache.myfaces.view.facelets.tag.jsf.PreDisposeViewEvent;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/application/ResourceHandlerImpl.java b/impl/src/main/java/org/apache/myfaces/application/ResourceHandlerImpl.java
index c17726a..3aeba66 100644
--- a/impl/src/main/java/org/apache/myfaces/application/ResourceHandlerImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/application/ResourceHandlerImpl.java
@@ -19,15 +19,15 @@
 package org.apache.myfaces.application;
 
 import org.apache.myfaces.renderkit.ErrorPageWriter;
-import org.apache.myfaces.shared_impl.resource.ResourceHandlerCache;
-import org.apache.myfaces.shared_impl.resource.ResourceHandlerCache.ResourceValue;
-import org.apache.myfaces.shared_impl.resource.ResourceHandlerSupport;
-import org.apache.myfaces.shared_impl.resource.ResourceImpl;
-import org.apache.myfaces.shared_impl.resource.ResourceLoader;
-import org.apache.myfaces.shared_impl.resource.ResourceMeta;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
-import org.apache.myfaces.shared_impl.util.ExternalContextUtils;
-import org.apache.myfaces.shared_impl.util.StringUtils;
+import org.apache.myfaces.shared.resource.ResourceHandlerCache;
+import org.apache.myfaces.shared.resource.ResourceHandlerCache.ResourceValue;
+import org.apache.myfaces.shared.util.ExternalContextUtils;
+import org.apache.myfaces.shared.util.StringUtils;
+import org.apache.myfaces.shared.resource.ResourceHandlerSupport;
+import org.apache.myfaces.shared.resource.ResourceImpl;
+import org.apache.myfaces.shared.resource.ResourceLoader;
+import org.apache.myfaces.shared.resource.ResourceMeta;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 import javax.faces.application.Resource;
 import javax.faces.application.ResourceHandler;
diff --git a/impl/src/main/java/org/apache/myfaces/application/TreeStructureManager.java b/impl/src/main/java/org/apache/myfaces/application/TreeStructureManager.java
index f1f95ab..ede1f57 100755
--- a/impl/src/main/java/org/apache/myfaces/application/TreeStructureManager.java
+++ b/impl/src/main/java/org/apache/myfaces/application/TreeStructureManager.java
@@ -18,7 +18,7 @@
  */
 package org.apache.myfaces.application;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
diff --git a/impl/src/main/java/org/apache/myfaces/application/ViewHandlerImpl.java b/impl/src/main/java/org/apache/myfaces/application/ViewHandlerImpl.java
index 1c006d6..8ad8ae4 100644
--- a/impl/src/main/java/org/apache/myfaces/application/ViewHandlerImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/application/ViewHandlerImpl.java
@@ -47,11 +47,11 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.apache.myfaces.renderkit.MyfacesResponseStateManager;
 import org.apache.myfaces.renderkit.StateCacheUtils;
-import org.apache.myfaces.shared_impl.application.DefaultViewHandlerSupport;
-import org.apache.myfaces.shared_impl.application.InvalidViewIdException;
-import org.apache.myfaces.shared_impl.application.ViewHandlerSupport;
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
-import org.apache.myfaces.shared_impl.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared.application.DefaultViewHandlerSupport;
+import org.apache.myfaces.shared.application.InvalidViewIdException;
+import org.apache.myfaces.shared.application.ViewHandlerSupport;
+import org.apache.myfaces.shared.config.MyfacesConfig;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
 import org.apache.myfaces.view.facelets.StateWriter;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/application/jsp/JspStateManagerImpl.java b/impl/src/main/java/org/apache/myfaces/application/jsp/JspStateManagerImpl.java
index 88d7248..d064f4e 100755
--- a/impl/src/main/java/org/apache/myfaces/application/jsp/JspStateManagerImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/application/jsp/JspStateManagerImpl.java
@@ -61,8 +61,8 @@ import org.apache.commons.collections.map.ReferenceMap;
 import org.apache.myfaces.application.MyfacesStateManager;
 import org.apache.myfaces.application.TreeStructureManager;
 import org.apache.myfaces.renderkit.MyfacesResponseStateManager;
-import org.apache.myfaces.shared_impl.renderkit.RendererUtils;
-import org.apache.myfaces.shared_impl.util.MyFacesObjectInputStream;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.util.MyFacesObjectInputStream;
 
 /**
  * Default StateManager implementation for use when views are defined
diff --git a/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java b/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java
index 1cdc6d4..c91c7cf 100755
--- a/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/application/jsp/JspViewHandlerImpl.java
@@ -45,11 +45,11 @@ import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import javax.servlet.jsp.jstl.core.Config;
 
-import org.apache.myfaces.shared_impl.application.DefaultViewHandlerSupport;
-import org.apache.myfaces.shared_impl.application.InvalidViewIdException;
-import org.apache.myfaces.shared_impl.application.ViewHandlerSupport;
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
-import org.apache.myfaces.shared_impl.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared.application.DefaultViewHandlerSupport;
+import org.apache.myfaces.shared.application.InvalidViewIdException;
+import org.apache.myfaces.shared.application.ViewHandlerSupport;
+import org.apache.myfaces.shared.config.MyfacesConfig;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
 
 /**
  * Implementation of the ViewHandler interface that knows how to use JSP pages
diff --git a/impl/src/main/java/org/apache/myfaces/application/jsp/ServletViewResponseWrapper.java b/impl/src/main/java/org/apache/myfaces/application/jsp/ServletViewResponseWrapper.java
index 857ca0e..70140bb 100644
--- a/impl/src/main/java/org/apache/myfaces/application/jsp/ServletViewResponseWrapper.java
+++ b/impl/src/main/java/org/apache/myfaces/application/jsp/ServletViewResponseWrapper.java
@@ -22,7 +22,7 @@ import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpServletResponseWrapper;
 
-import org.apache.myfaces.shared_impl.view.ViewResponseWrapper;
+import org.apache.myfaces.shared.view.ViewResponseWrapper;
 
 import java.io.*;
 import java.nio.ByteBuffer;
diff --git a/impl/src/main/java/org/apache/myfaces/config/ConfigFilesXmlValidationUtils.java b/impl/src/main/java/org/apache/myfaces/config/ConfigFilesXmlValidationUtils.java
index 5600c48..67caac3 100644
--- a/impl/src/main/java/org/apache/myfaces/config/ConfigFilesXmlValidationUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/config/ConfigFilesXmlValidationUtils.java
@@ -37,7 +37,7 @@ import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 import javax.xml.validation.Validator;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.w3c.dom.ls.LSInput;
 import org.w3c.dom.ls.LSResourceResolver;
 import org.xml.sax.Attributes;
diff --git a/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigResourceProvider.java b/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigResourceProvider.java
index 7bb4325..ef14989 100644
--- a/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigResourceProvider.java
+++ b/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigResourceProvider.java
@@ -27,7 +27,7 @@ import java.util.List;
 
 import javax.faces.context.ExternalContext;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.FacesConfigResourceProvider;
 import org.apache.myfaces.view.facelets.util.Classpath;
 
diff --git a/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigurationProvider.java b/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigurationProvider.java
index 66053f9..4bffce6 100644
--- a/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigurationProvider.java
+++ b/impl/src/main/java/org/apache/myfaces/config/DefaultFacesConfigurationProvider.java
@@ -21,8 +21,8 @@ package org.apache.myfaces.config;
 import org.apache.myfaces.config.annotation.AnnotationConfigurator;
 import org.apache.myfaces.config.element.FacesConfig;
 import org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl;
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.config.MyfacesConfig;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.FacesConfigResourceProvider;
 import org.apache.myfaces.spi.FacesConfigResourceProviderFactory;
 import org.apache.myfaces.spi.FacesConfigurationProvider;
diff --git a/impl/src/main/java/org/apache/myfaces/config/FacesConfigValidator.java b/impl/src/main/java/org/apache/myfaces/config/FacesConfigValidator.java
index c7ee8d2..0413a2b 100644
--- a/impl/src/main/java/org/apache/myfaces/config/FacesConfigValidator.java
+++ b/impl/src/main/java/org/apache/myfaces/config/FacesConfigValidator.java
@@ -30,7 +30,7 @@ import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConf
 import org.apache.myfaces.config.element.ManagedBean;
 import org.apache.myfaces.config.element.NavigationCase;
 import org.apache.myfaces.config.element.NavigationRule;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 public class FacesConfigValidator
 {
diff --git a/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java b/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
index 1d7e5fc..ee5c6b8 100755
--- a/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
+++ b/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
@@ -95,12 +95,12 @@ import org.apache.myfaces.el.unified.ResolverBuilderBase;
 import org.apache.myfaces.lifecycle.LifecycleFactoryImpl;
 import org.apache.myfaces.renderkit.RenderKitFactoryImpl;
 import org.apache.myfaces.renderkit.html.HtmlRenderKitImpl;
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
-import org.apache.myfaces.shared_impl.util.LocaleUtils;
-import org.apache.myfaces.shared_impl.util.StateUtils;
-import org.apache.myfaces.shared_impl.util.serial.DefaultSerialFactory;
-import org.apache.myfaces.shared_impl.util.serial.SerialFactory;
+import org.apache.myfaces.shared.util.StateUtils;
+import org.apache.myfaces.shared.config.MyfacesConfig;
+import org.apache.myfaces.shared.util.ClassUtils;
+import org.apache.myfaces.shared.util.LocaleUtils;
+import org.apache.myfaces.shared.util.serial.DefaultSerialFactory;
+import org.apache.myfaces.shared.util.serial.SerialFactory;
 import org.apache.myfaces.spi.FacesConfigurationMerger;
 import org.apache.myfaces.spi.FacesConfigurationMergerFactory;
 import org.apache.myfaces.util.ContainerUtils;
diff --git a/impl/src/main/java/org/apache/myfaces/config/LogMetaInfUtils.java b/impl/src/main/java/org/apache/myfaces/config/LogMetaInfUtils.java
index aa6f4ce..543f9de 100644
--- a/impl/src/main/java/org/apache/myfaces/config/LogMetaInfUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/config/LogMetaInfUtils.java
@@ -19,7 +19,7 @@
 
 package org.apache.myfaces.config;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 import javax.faces.FacesException;
 import java.net.URL;
diff --git a/impl/src/main/java/org/apache/myfaces/config/ManagedBeanBuilder.java b/impl/src/main/java/org/apache/myfaces/config/ManagedBeanBuilder.java
index 04b315f..da791a7 100755
--- a/impl/src/main/java/org/apache/myfaces/config/ManagedBeanBuilder.java
+++ b/impl/src/main/java/org/apache/myfaces/config/ManagedBeanBuilder.java
@@ -29,7 +29,7 @@ import org.apache.myfaces.config.element.ManagedProperty;
 import org.apache.myfaces.config.element.MapEntries;
 import org.apache.myfaces.config.element.MapEntry;
 import org.apache.myfaces.context.servlet.StartupServletExternalContextImpl;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.util.ContainerUtils;
 
 import javax.el.ELContext;
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java
index 1c0f193..3655a97 100644
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java
+++ b/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java
@@ -50,7 +50,7 @@ import javax.faces.render.FacesRenderer;
 import javax.faces.validator.FacesValidator;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.AnnotationProvider;
 import org.apache.myfaces.spi.AnnotationProviderFactory;
 import org.apache.myfaces.view.facelets.util.Classpath;
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java b/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java
index ef2a3c3..9fd83ba 100644
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java
+++ b/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultLifecycleProviderFactory.java
@@ -34,7 +34,7 @@ import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.ServiceProviderFinderFactory;
 
 /*
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/NoAnnotationLifecyleProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/NoAnnotationLifecyleProvider.java
index 04e18ae..32fb53b 100644
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/NoAnnotationLifecyleProvider.java
+++ b/impl/src/main/java/org/apache/myfaces/config/annotation/NoAnnotationLifecyleProvider.java
@@ -18,7 +18,7 @@
  */
 package org.apache.myfaces.config.annotation;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 import java.lang.reflect.InvocationTargetException;
 
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/NoInjectionAnnotationLifecycleProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/NoInjectionAnnotationLifecycleProvider.java
index 30e2c4f..f1c2b93 100644
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/NoInjectionAnnotationLifecycleProvider.java
+++ b/impl/src/main/java/org/apache/myfaces/config/annotation/NoInjectionAnnotationLifecycleProvider.java
@@ -26,7 +26,7 @@ import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.naming.NamingException;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  * See SRV.14.5 Servlet Specification Version 2.5 JSR 154
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/Tomcat7AnnotationLifecycleProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/Tomcat7AnnotationLifecycleProvider.java
index 3fdcfe9..ec29367 100644
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/Tomcat7AnnotationLifecycleProvider.java
+++ b/impl/src/main/java/org/apache/myfaces/config/annotation/Tomcat7AnnotationLifecycleProvider.java
@@ -28,7 +28,7 @@ import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 import javax.naming.NamingException;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.tomcat.InstanceManager;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/TomcatAnnotationLifecycleProvider.java b/impl/src/main/java/org/apache/myfaces/config/annotation/TomcatAnnotationLifecycleProvider.java
index d5900d7..a535e2e 100644
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/TomcatAnnotationLifecycleProvider.java
+++ b/impl/src/main/java/org/apache/myfaces/config/annotation/TomcatAnnotationLifecycleProvider.java
@@ -25,7 +25,7 @@ import javax.faces.context.ExternalContext;
 import javax.naming.NamingException;
 import javax.servlet.ServletContext;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 public class TomcatAnnotationLifecycleProvider implements 
     DiscoverableLifecycleProvider, LifecycleProvider2
diff --git a/impl/src/main/java/org/apache/myfaces/config/annotation/_PackageInfo.java b/impl/src/main/java/org/apache/myfaces/config/annotation/_PackageInfo.java
index d72eac1..5bc8fed 100644
--- a/impl/src/main/java/org/apache/myfaces/config/annotation/_PackageInfo.java
+++ b/impl/src/main/java/org/apache/myfaces/config/annotation/_PackageInfo.java
@@ -32,7 +32,7 @@ import java.util.jar.JarFile;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  * Copied from org.apache.shale.tiger.view.faces.PackageInfo
diff --git a/impl/src/main/java/org/apache/myfaces/config/impl/FacesConfigEntityResolver.java b/impl/src/main/java/org/apache/myfaces/config/impl/FacesConfigEntityResolver.java
index ba07b75..67814e4 100755
--- a/impl/src/main/java/org/apache/myfaces/config/impl/FacesConfigEntityResolver.java
+++ b/impl/src/main/java/org/apache/myfaces/config/impl/FacesConfigEntityResolver.java
@@ -27,7 +27,7 @@ import java.util.logging.Logger;
 
 import javax.faces.context.ExternalContext;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
 
diff --git a/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java b/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java
index d86338e..010f41d 100755
--- a/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java
@@ -26,7 +26,7 @@ import org.apache.myfaces.config.FacesConfigUnmarshaller;
 import org.apache.myfaces.config.impl.digester.elements.*;
 import org.apache.myfaces.config.impl.FacesConfigEntityResolver;
 import org.apache.commons.digester.Digester;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 
diff --git a/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ManagedBean.java b/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ManagedBean.java
index 274ab55..f9250d8 100755
--- a/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ManagedBean.java
+++ b/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ManagedBean.java
@@ -26,7 +26,7 @@ import java.util.List;
 import javax.el.ValueExpression;
 import javax.faces.context.FacesContext;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.view.facelets.el.ELText;
 
 
diff --git a/impl/src/main/java/org/apache/myfaces/context/ExceptionHandlerFactoryImpl.java b/impl/src/main/java/org/apache/myfaces/context/ExceptionHandlerFactoryImpl.java
index 42c27d7..f367e08 100644
--- a/impl/src/main/java/org/apache/myfaces/context/ExceptionHandlerFactoryImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/context/ExceptionHandlerFactoryImpl.java
@@ -21,9 +21,9 @@ package org.apache.myfaces.context;
 import javax.faces.context.ExceptionHandler;
 import javax.faces.context.ExceptionHandlerFactory;
 
-import org.apache.myfaces.shared_impl.context.AjaxExceptionHandlerImpl;
-import org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl;
-import org.apache.myfaces.shared_impl.context.SwitchAjaxExceptionHandlerWrapperImpl;
+import org.apache.myfaces.shared.context.AjaxExceptionHandlerImpl;
+import org.apache.myfaces.shared.context.ExceptionHandlerImpl;
+import org.apache.myfaces.shared.context.SwitchAjaxExceptionHandlerWrapperImpl;
 
 /**
  * DOCUMENT ME!
diff --git a/impl/src/main/java/org/apache/myfaces/context/FacesContextFactoryImpl.java b/impl/src/main/java/org/apache/myfaces/context/FacesContextFactoryImpl.java
index e3a55bd..19e52d0 100755
--- a/impl/src/main/java/org/apache/myfaces/context/FacesContextFactoryImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/context/FacesContextFactoryImpl.java
@@ -33,7 +33,7 @@ import javax.faces.lifecycle.Lifecycle;
 import javax.servlet.ServletContext;
 
 import org.apache.myfaces.context.servlet.FacesContextImpl;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  * DOCUMENT ME!
diff --git a/impl/src/main/java/org/apache/myfaces/context/MyFacesExceptionHandlerWrapperImpl.java b/impl/src/main/java/org/apache/myfaces/context/MyFacesExceptionHandlerWrapperImpl.java
index b60a0c0..103d493 100644
--- a/impl/src/main/java/org/apache/myfaces/context/MyFacesExceptionHandlerWrapperImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/context/MyFacesExceptionHandlerWrapperImpl.java
@@ -38,7 +38,7 @@ import javax.faces.event.ExceptionQueuedEventContext;
 import javax.faces.event.SystemEvent;
 
 import org.apache.myfaces.renderkit.ErrorPageWriter;
-import org.apache.myfaces.shared_impl.util.WebConfigParamUtils;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
 import org.apache.myfaces.spi.WebConfigProvider;
 import org.apache.myfaces.spi.WebConfigProviderFactory;
 
diff --git a/impl/src/main/java/org/apache/myfaces/context/servlet/FacesContextImpl.java b/impl/src/main/java/org/apache/myfaces/context/servlet/FacesContextImpl.java
index c54f74d..0f4efff 100755
--- a/impl/src/main/java/org/apache/myfaces/context/servlet/FacesContextImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/context/servlet/FacesContextImpl.java
@@ -42,7 +42,7 @@ import javax.servlet.ServletResponse;
 
 import org.apache.myfaces.context.ReleaseableExternalContext;
 import org.apache.myfaces.context.ReleaseableFacesContextFactory;
-import org.apache.myfaces.shared_impl.util.NullIterator;
+import org.apache.myfaces.shared.util.NullIterator;
 
 /**
  * @author Manfred Geiler (latest modification by $Author$)
diff --git a/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java b/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java
index bfde96b..3133c3f 100644
--- a/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/context/servlet/PartialViewContextImpl.java
@@ -46,7 +46,7 @@ import javax.faces.render.RenderKitFactory;
 import javax.faces.view.ViewMetadata;
 
 import org.apache.myfaces.context.PartialResponseWriterImpl;
-import org.apache.myfaces.shared_impl.util.StringUtils;
+import org.apache.myfaces.shared.util.StringUtils;
 
 public class PartialViewContextImpl extends PartialViewContext {
 
diff --git a/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java b/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java
index 02d9ceb..381c035 100755
--- a/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/context/servlet/ServletExternalContextImpl.java
@@ -47,7 +47,7 @@ import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 
-import org.apache.myfaces.shared_impl.context.flash.FlashImpl;
+import org.apache.myfaces.shared.context.flash.FlashImpl;
 import org.apache.myfaces.util.EnumerationIterator;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/context/servlet/SessionMap.java b/impl/src/main/java/org/apache/myfaces/context/servlet/SessionMap.java
index 7b654fb..9d97d4a 100755
--- a/impl/src/main/java/org/apache/myfaces/context/servlet/SessionMap.java
+++ b/impl/src/main/java/org/apache/myfaces/context/servlet/SessionMap.java
@@ -24,7 +24,7 @@ import java.util.Map;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 
-import org.apache.myfaces.shared_impl.util.NullEnumeration;
+import org.apache.myfaces.shared.util.NullEnumeration;
 import org.apache.myfaces.util.AbstractThreadSafeAttributeMap;
 
 
diff --git a/impl/src/main/java/org/apache/myfaces/el/VariableResolverToApplicationELResolverAdapter.java b/impl/src/main/java/org/apache/myfaces/el/VariableResolverToApplicationELResolverAdapter.java
index f833fb4..efa7db0 100644
--- a/impl/src/main/java/org/apache/myfaces/el/VariableResolverToApplicationELResolverAdapter.java
+++ b/impl/src/main/java/org/apache/myfaces/el/VariableResolverToApplicationELResolverAdapter.java
@@ -23,7 +23,7 @@ import javax.faces.context.FacesContext;
 import javax.faces.el.EvaluationException;
 import javax.faces.el.VariableResolver;
 
-import org.apache.myfaces.shared_impl.util.Assert;
+import org.apache.myfaces.shared.util.Assert;
 
 /**
  * This class is used to delegate {@link #resolveVariable(FacesContext, String)} to the el resolver of the application.
diff --git a/impl/src/main/java/org/apache/myfaces/el/convert/ValueBindingToValueExpression.java b/impl/src/main/java/org/apache/myfaces/el/convert/ValueBindingToValueExpression.java
index db83210..dbe87e6 100644
--- a/impl/src/main/java/org/apache/myfaces/el/convert/ValueBindingToValueExpression.java
+++ b/impl/src/main/java/org/apache/myfaces/el/convert/ValueBindingToValueExpression.java
@@ -31,7 +31,7 @@ import javax.faces.context.FacesContext;
 import javax.faces.el.EvaluationException;
 import javax.faces.el.ValueBinding;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  * Wraps a ValueBinding inside a ValueExpression. Also allows access to the original ValueBinding object.
diff --git a/impl/src/main/java/org/apache/myfaces/el/convert/ValueExpressionToValueBinding.java b/impl/src/main/java/org/apache/myfaces/el/convert/ValueExpressionToValueBinding.java
index e8533c9..372b5b0 100644
--- a/impl/src/main/java/org/apache/myfaces/el/convert/ValueExpressionToValueBinding.java
+++ b/impl/src/main/java/org/apache/myfaces/el/convert/ValueExpressionToValueBinding.java
@@ -26,7 +26,7 @@ import javax.faces.el.EvaluationException;
 import javax.faces.el.PropertyNotFoundException;
 import javax.faces.el.ValueBinding;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  * Converter for legacy ValueBinding objects. See JSF 1.2 section 5.8.3
diff --git a/impl/src/main/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport.java b/impl/src/main/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport.java
index 5a7ea4f..32e43f0 100644
--- a/impl/src/main/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport.java
+++ b/impl/src/main/java/org/apache/myfaces/lifecycle/DefaultRestoreViewSupport.java
@@ -42,9 +42,9 @@ import javax.faces.render.RenderKitFactory;
 import javax.faces.render.ResponseStateManager;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
-import org.apache.myfaces.shared_impl.application.FacesServletMapping;
-import org.apache.myfaces.shared_impl.application.InvalidViewIdException;
-import org.apache.myfaces.shared_impl.util.Assert;
+import org.apache.myfaces.shared.application.FacesServletMapping;
+import org.apache.myfaces.shared.application.InvalidViewIdException;
+import org.apache.myfaces.shared.util.Assert;
 
 /**
  * @author Mathias Broekelmann (latest modification by $Author$)
diff --git a/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java b/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java
index 416ccce..9959b2f 100755
--- a/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/lifecycle/LifecycleImpl.java
@@ -35,7 +35,7 @@ import javax.faces.lifecycle.Lifecycle;
 
 import org.apache.myfaces.config.FacesConfigurator;
 import org.apache.myfaces.renderkit.ErrorPageWriter;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.shared_impl.webapp.webxml.WebXml;
 import org.apache.myfaces.util.DebugUtils;
 
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/ErrorPageWriter.java b/impl/src/main/java/org/apache/myfaces/renderkit/ErrorPageWriter.java
index 3620207..022ef7b 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/ErrorPageWriter.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/ErrorPageWriter.java
@@ -69,9 +69,9 @@ import javax.faces.view.Location;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlResponseWriterImpl;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
-import org.apache.myfaces.shared_impl.util.StateUtils;
+import org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl;
+import org.apache.myfaces.shared.util.StateUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.WebConfigProvider;
 import org.apache.myfaces.spi.WebConfigProviderFactory;
 import org.apache.myfaces.view.facelets.component.UIRepeat;
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/ServerSideStateCacheImpl.java b/impl/src/main/java/org/apache/myfaces/renderkit/ServerSideStateCacheImpl.java
index 538de64..22e23e8 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/ServerSideStateCacheImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/ServerSideStateCacheImpl.java
@@ -45,9 +45,9 @@ import org.apache.commons.collections.map.AbstractReferenceMap;
 import org.apache.commons.collections.map.ReferenceMap;
 import org.apache.myfaces.application.StateCache;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
-import org.apache.myfaces.shared_impl.renderkit.RendererUtils;
-import org.apache.myfaces.shared_impl.util.MyFacesObjectInputStream;
-import org.apache.myfaces.shared_impl.util.WebConfigParamUtils;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.util.MyFacesObjectInputStream;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
 
 class ServerSideStateCacheImpl extends StateCache<Object, Object>
 {
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlBodyRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlBodyRenderer.java
index bba3b49..5b553bc 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlBodyRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlBodyRenderer.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlBodyRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlBodyRendererBase;
 
 /**
  * Renderer used by h:body component
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlButtonRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlButtonRenderer.java
index ada471d..07b807a 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlButtonRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlButtonRenderer.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlButtonRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlButtonRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRenderer.java
index 7a2faa5..db2d059 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRenderer.java
@@ -20,7 +20,7 @@ package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderers;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlCheckboxRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlCheckboxRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCompositeComponentRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCompositeComponentRenderer.java
index 45ab913..cb8a82f 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCompositeComponentRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCompositeComponentRenderer.java
@@ -26,7 +26,7 @@ import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRenderer;
+import org.apache.myfaces.shared.renderkit.html.HtmlRenderer;
 
 /**
  * 
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCompositeFacetRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCompositeFacetRenderer.java
index 026c4c3..cb59b8f 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCompositeFacetRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlCompositeFacetRenderer.java
@@ -25,7 +25,7 @@ import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRenderer;
+import org.apache.myfaces.shared.renderkit.html.HtmlRenderer;
 
 /**
  * 
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormRenderer.java
index 76d56aa..e00b597 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormRenderer.java
@@ -26,10 +26,10 @@ import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlFormRendererBase;
-import org.apache.myfaces.shared_impl.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared.renderkit.html.HtmlFormRendererBase;
+import org.apache.myfaces.shared.config.MyfacesConfig;
+import org.apache.myfaces.shared.renderkit.html.HTML;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormatRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormatRenderer.java
index b60b98d..cf99bf8 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormatRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlFormatRenderer.java
@@ -32,11 +32,11 @@ import javax.faces.component.html.HtmlOutputFormat;
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
-import org.apache.myfaces.shared_impl.renderkit.RendererUtils;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.renderkit.html.HtmlRendererUtils;
+import org.apache.myfaces.shared.renderkit.html.HtmlTextRendererBase;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.html.HtmlRenderer;
 
 /**
  * 
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlGridRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlGridRenderer.java
index 725206a..e8b715c 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlGridRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlGridRenderer.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlGridRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlGridRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlGroupRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlGroupRenderer.java
index 9330be4..dc1e61f 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlGroupRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlGroupRenderer.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlGroupRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlGroupRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlHeadRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlHeadRenderer.java
index 9b2e9fc..62d47c1 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlHeadRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlHeadRenderer.java
@@ -27,8 +27,8 @@ import javax.faces.context.ResponseWriter;
 import javax.faces.render.Renderer;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils;
+import org.apache.myfaces.shared.renderkit.html.HtmlRendererUtils;
+import org.apache.myfaces.shared.renderkit.html.HTML;
 
 /**
  * Renderer used by h:head component
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlHiddenRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlHiddenRenderer.java
index 9a6bfaf..85276b3 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlHiddenRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlHiddenRenderer.java
@@ -28,11 +28,11 @@ import javax.faces.context.ResponseWriter;
 import javax.faces.convert.ConverterException;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
-import org.apache.myfaces.shared_impl.renderkit.RendererUtils;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.renderkit.html.HtmlRendererUtils;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.html.HTML;
+import org.apache.myfaces.shared.renderkit.html.HtmlRenderer;
 
 /**
  * 
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlImageRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlImageRenderer.java
index ca127a4..184f81b 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlImageRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlImageRenderer.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlImageRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlImageRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java
index 411dc50..beea2d8 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java
@@ -33,14 +33,14 @@ import javax.faces.context.FacesContext;
 import javax.faces.context.ResponseWriter;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.component.EscapeCapable;
-import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
-import org.apache.myfaces.shared_impl.renderkit.RendererUtils;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils;
-import org.apache.myfaces.shared_impl.renderkit.html.util.JavascriptUtils;
-import org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.renderkit.html.HtmlRendererUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.component.EscapeCapable;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.html.HTML;
+import org.apache.myfaces.shared.renderkit.html.HtmlRenderer;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
 
 /**
  * 
@@ -133,12 +133,12 @@ public class HtmlLabelRenderer extends HtmlRenderer
                 }
                 else
                 {
-                    escape = RendererUtils.getBooleanAttribute(uiComponent, org.apache.myfaces.shared_impl.renderkit.JSFAttr.ESCAPE_ATTR,
+                    escape = RendererUtils.getBooleanAttribute(uiComponent, org.apache.myfaces.shared.renderkit.JSFAttr.ESCAPE_ATTR,
                                                                true); //default is to escape
                 }                
                 if (escape)
                 {
-                    writer.writeText(text, org.apache.myfaces.shared_impl.renderkit.JSFAttr.VALUE_ATTR);
+                    writer.writeText(text, org.apache.myfaces.shared.renderkit.JSFAttr.VALUE_ATTR);
                 }
                 else
                 {
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLinkRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLinkRenderer.java
index 3c8da08..78fae83 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLinkRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLinkRenderer.java
@@ -20,7 +20,7 @@ package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderers;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlLinkRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlLinkRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlListboxRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlListboxRenderer.java
index e965da6..aee042f 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlListboxRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlListboxRenderer.java
@@ -20,7 +20,7 @@ package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderers;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlListboxRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlListboxRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMenuRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMenuRenderer.java
index bab26d2..a62b06e 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMenuRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMenuRenderer.java
@@ -20,7 +20,7 @@ package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderers;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlMenuRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlMenuRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMessageRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMessageRenderer.java
index b598e8c..1498a7b 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMessageRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMessageRenderer.java
@@ -29,8 +29,8 @@ import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlMessageRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlMessageRendererBase;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
 
 /**
  * 
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMessagesRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMessagesRenderer.java
index 39349df..968df6b 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMessagesRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlMessagesRenderer.java
@@ -29,8 +29,8 @@ import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlMessagesRendererBase;
-import org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.renderkit.html.HtmlMessagesRendererBase;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
 
 /**
  * 
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRenderer.java
index c99e227..f67cf8b 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRenderer.java
@@ -24,7 +24,7 @@ import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlOutcomeTargetButtonRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlOutcomeTargetButtonRendererBase;
 
 /**
  * @since 2.0
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlRadioRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlRadioRenderer.java
index e4fee13..d01548f3 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlRadioRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlRadioRenderer.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRadioRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlRadioRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlRenderKitImpl.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlRenderKitImpl.java
index 60bc1e6..90429bb 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlRenderKitImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlRenderKitImpl.java
@@ -39,9 +39,9 @@ import javax.faces.render.Renderer;
 import javax.faces.render.ResponseStateManager;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderKit;
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlResponseWriterImpl;
+import org.apache.myfaces.shared.renderkit.html.HtmlRendererUtils;
+import org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl;
+import org.apache.myfaces.shared.config.MyfacesConfig;
 
 /**
  * @author Manfred Geiler (latest modification by $Author$)
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java
index 55bab32..698d3b9 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlResponseStateManager.java
@@ -33,12 +33,12 @@ import org.apache.myfaces.application.StateCacheFactory;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
 import org.apache.myfaces.renderkit.MyfacesResponseStateManager;
 import org.apache.myfaces.renderkit.StateCacheFactoryImpl;
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils;
-import org.apache.myfaces.shared_impl.renderkit.html.util.JavascriptUtils;
-import org.apache.myfaces.shared_impl.util.StateUtils;
-import org.apache.myfaces.shared_impl.util.WebConfigParamUtils;
+import org.apache.myfaces.shared.renderkit.html.HtmlRendererUtils;
+import org.apache.myfaces.shared.util.StateUtils;
+import org.apache.myfaces.shared.config.MyfacesConfig;
+import org.apache.myfaces.shared.renderkit.html.HTML;
+import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
 
 /**
  * @author Manfred Geiler (latest modification by $Author$)
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlScriptRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlScriptRenderer.java
index 547ed75..d7cb688 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlScriptRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlScriptRenderer.java
@@ -34,10 +34,10 @@ import javax.faces.event.*;
 import javax.faces.render.Renderer;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
-import org.apache.myfaces.shared_impl.renderkit.RendererUtils;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.html.HTML;
 import org.apache.myfaces.view.facelets.PostBuildComponentTreeOnRestoreViewEvent;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlSecretRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlSecretRenderer.java
index ab81e6f..407bfe2 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlSecretRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlSecretRenderer.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlSecretRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlSecretRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlStylesheetRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlStylesheetRenderer.java
index 5baf21f..f1b5d40 100644
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlStylesheetRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlStylesheetRenderer.java
@@ -41,10 +41,10 @@ import javax.faces.event.PostAddToViewEvent;
 import javax.faces.render.Renderer;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
-import org.apache.myfaces.shared_impl.renderkit.RendererUtils;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.html.HTML;
 import org.apache.myfaces.view.facelets.PostBuildComponentTreeOnRestoreViewEvent;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTableRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTableRenderer.java
index 87d6ea9..842f814 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTableRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTableRenderer.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlTableRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlTableRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTextRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTextRenderer.java
index 99191ac..5d92dee 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTextRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTextRenderer.java
@@ -20,7 +20,7 @@ package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderers;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlTextRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTextareaRenderer.java b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTextareaRenderer.java
index 72cb506..d5350e3 100755
--- a/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTextareaRenderer.java
+++ b/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlTextareaRenderer.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.renderkit.html;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlTextareaRendererBase;
+import org.apache.myfaces.shared.renderkit.html.HtmlTextareaRendererBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/resource/InternalClassLoaderResourceLoader.java b/impl/src/main/java/org/apache/myfaces/resource/InternalClassLoaderResourceLoader.java
index 5328b96..a6f7f97 100644
--- a/impl/src/main/java/org/apache/myfaces/resource/InternalClassLoaderResourceLoader.java
+++ b/impl/src/main/java/org/apache/myfaces/resource/InternalClassLoaderResourceLoader.java
@@ -24,12 +24,12 @@ import java.net.URL;
 import javax.faces.context.FacesContext;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
-import org.apache.myfaces.shared_impl.resource.AliasResourceMetaImpl;
-import org.apache.myfaces.shared_impl.resource.ResourceLoader;
-import org.apache.myfaces.shared_impl.resource.ResourceMeta;
-import org.apache.myfaces.shared_impl.resource.ResourceMetaImpl;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
-import org.apache.myfaces.shared_impl.util.WebConfigParamUtils;
+import org.apache.myfaces.shared.resource.AliasResourceMetaImpl;
+import org.apache.myfaces.shared.resource.ResourceLoader;
+import org.apache.myfaces.shared.resource.ResourceMeta;
+import org.apache.myfaces.shared.resource.ResourceMetaImpl;
+import org.apache.myfaces.shared.util.ClassUtils;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
 
 /**
  * A resource loader implementation which loads resources from the thread ClassLoader.
@@ -124,13 +124,13 @@ public class InternalClassLoaderResourceLoader extends ResourceLoader
     {
         //handle jsf.js
         if (libraryName != null && 
-                org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils.JAVAX_FACES_LIBRARY_NAME.equals(libraryName) &&
-                org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils.JSF_JS_RESOURCE_NAME.equals(resourceName))
+                org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.JAVAX_FACES_LIBRARY_NAME.equals(libraryName) &&
+                org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.JSF_JS_RESOURCE_NAME.equals(resourceName))
         {
             if (_useMultipleJsFilesForJsfUncompressedJs)
             {
                 return new AliasResourceMetaImpl(prefix, libraryName, libraryVersion,
-                    resourceName, resourceVersion, org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils.JSF_UNCOMPRESSED_JS_RESOURCE_NAME, true);
+                    resourceName, resourceVersion, org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.JSF_UNCOMPRESSED_JS_RESOURCE_NAME, true);
             }
             else
             {
@@ -139,11 +139,11 @@ public class InternalClassLoaderResourceLoader extends ResourceLoader
         }
         //handle the oamSubmit.js
         else if (libraryName != null &&
-                org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils.MYFACES_LIBRARY_NAME.equals(libraryName) &&
-                org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils.MYFACES_JS_RESOURCE_NAME.equals(resourceName))
+                org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.MYFACES_LIBRARY_NAME.equals(libraryName) &&
+                org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.MYFACES_JS_RESOURCE_NAME.equals(resourceName))
         {
                 return new AliasResourceMetaImpl(prefix, libraryName, libraryVersion,
-                    resourceName, resourceVersion, org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils.MYFACES_JS_RESOURCE_NAME_UNCOMPRESSED, true);
+                    resourceName, resourceVersion, org.apache.myfaces.shared.renderkit.html.util.ResourceUtils.MYFACES_JS_RESOURCE_NAME_UNCOMPRESSED, true);
         } else if (libraryName != null && libraryName.startsWith("org.apache.myfaces.core"))
         {
             return new ResourceMetaImpl(prefix, libraryName, libraryVersion, resourceName, resourceVersion);
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/SelectItemTag.java b/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/DelegatedFacesServlet.java
old mode 100755
new mode 100644
similarity index 70%
copy from impl/src/main/java/org/apache/myfaces/taglib/core/SelectItemTag.java
copy to impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/DelegatedFacesServlet.java
index 6dd779e..5b825b3
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/SelectItemTag.java
+++ b/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/DelegatedFacesServlet.java
@@ -1,32 +1,23 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.myfaces.taglib.core;
-
-import org.apache.myfaces.shared_impl.taglib.core.SelectItemTagBase;
-
-
-/**
- * @author Manfred Geiler (latest modification by $Author$)
- * @version $Revision$ $Date$
- */
-public class SelectItemTag
-        extends SelectItemTagBase
-{
-    //private static final Log log = LogFactory.getLog(SelectItemTag.class);
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.shared_impl.webapp.webxml;
+
+public interface DelegatedFacesServlet
+{
+}
diff --git a/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/FilterMapping.java b/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/FilterMapping.java
new file mode 100644
index 0000000..2afd9fc
--- /dev/null
+++ b/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/FilterMapping.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.shared_impl.webapp.webxml;
+
+/**
+ * @author Mario Ivankovits (latest modification by $Author: matzew $)
+ * @version $Revision: 557350 $ $Date: 2007-07-18 13:19:50 -0500 (Mié, 18 Jul 2007) $
+ */
+public class FilterMapping
+{
+    private String _filterName;
+    private Class _filterClass;
+    private String _urlPattern;
+    private boolean _isExtensionMapping = false;
+
+    public FilterMapping(String filterName,
+                          Class filterClass,
+                          String urlPattern)
+    {
+        _filterName = filterName;
+        _filterClass = filterClass;
+        _urlPattern = urlPattern;
+        if (_urlPattern != null)
+        {
+            if (_urlPattern.startsWith("*."))
+            {
+                _isExtensionMapping = true;
+            }
+        }
+    }
+
+    public boolean isExtensionMapping()
+    {
+        return _isExtensionMapping;
+    }
+
+    public String getFilterName()
+    {
+        return _filterName;
+    }
+
+    public Class getFilterClass()
+    {
+        return _filterClass;
+    }
+
+    public String getUrlPattern()
+    {
+        return _urlPattern;
+    }
+}
diff --git a/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/ServletMapping.java b/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/ServletMapping.java
new file mode 100644
index 0000000..13d83c0
--- /dev/null
+++ b/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/ServletMapping.java
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.shared_impl.webapp.webxml;
+
+/**
+ * @author Manfred Geiler (latest modification by $Author: matzew $)
+ * @version $Revision: 557350 $ $Date: 2007-07-18 13:19:50 -0500 (Mié, 18 Jul 2007) $
+ */
+public class ServletMapping
+{
+    private final String _servletName;
+    private final Class _servletClass;
+    private final String _urlPattern;
+    private final String _extension;
+    private final String _prefix;
+
+    public ServletMapping(String servletName, Class servletClass, String urlPattern)
+    {
+        _servletName = servletName;
+        _servletClass = servletClass;
+        _urlPattern = urlPattern;
+        _extension = _urlPattern != null && _urlPattern.startsWith("*.") ? _urlPattern.substring(_urlPattern
+                .indexOf('.')) : null;
+        if (_extension == null)
+        {
+            int index = _urlPattern.indexOf("/*");
+            if (index != -1)
+            {
+                _prefix = _urlPattern.substring(0, _urlPattern.indexOf("/*"));
+            }
+            else
+            {
+                _prefix = _urlPattern;
+            }
+        }
+        else
+        {
+            _prefix = null;
+        }
+    }
+
+    public boolean isExtensionMapping()
+    {
+        return _extension != null;
+    }
+
+    public String getExtension()
+    {
+        return _extension;
+    }
+
+    public String getPrefix()
+    {
+        return _prefix;
+    }
+
+    public String getServletName()
+    {
+        return _servletName;
+    }
+
+    public Class getServletClass()
+    {
+        return _servletClass;
+    }
+
+    public String getUrlPattern()
+    {
+        return _urlPattern;
+    }
+}
diff --git a/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/WebXml.java b/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/WebXml.java
new file mode 100644
index 0000000..3fc98c6
--- /dev/null
+++ b/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/WebXml.java
@@ -0,0 +1,282 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.shared_impl.webapp.webxml;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.context.ExternalContext;
+import javax.faces.webapp.FacesServlet;
+
+import org.apache.myfaces.shared.config.MyfacesConfig;
+
+/**
+ * @author Manfred Geiler (latest modification by $Author: lu4242 $)
+ * @version $Revision: 1031726 $ $Date: 2010-11-05 14:15:42 -0500 (Vie, 05 Nov 2010) $
+ */
+public class WebXml
+{
+    //private static final Log log = LogFactory.getLog(WebXml.class);
+    private static final Logger log = Logger.getLogger(WebXml.class.getName());
+
+
+    private static long refreshPeriod;
+    private long parsingTime;
+
+    private Map _servlets = new HashMap();
+    private Map _servletMappings = new HashMap();
+    private Map _filters = new HashMap();
+    private Map _filterMappings = new HashMap();
+
+    private volatile List _facesServletMappings = null;
+    private volatile List _facesExtensionsFilterMappings = null;
+    
+    private String _delegateFacesServlet = null;
+    private boolean errorPagePresent = false;
+
+    void addServlet(String servletName, String servletClass)
+    {
+        if (_servlets.get(servletName) != null)
+        {
+            log.warning("Servlet " + servletName + " defined more than once, first definition will be used.");
+        }
+        else
+        {
+            _servlets.put(servletName, servletClass);
+        }
+    }
+
+    void addFilter(String filterName, String filterClass)
+    {
+        if (_filters.get(filterName) != null)
+        {
+            log.warning("Filter " + filterName + " defined more than once, first definition will be used.");
+        }
+        else
+        {
+            _filters.put(filterName, filterClass);
+        }
+    }
+
+    boolean containsServlet(String servletName)
+    {
+        return _servlets.containsKey(servletName);
+    }
+
+    boolean containsFilter(String filterName)
+    {
+        return _filters.containsKey(filterName);
+    }
+
+    void addServletMapping(String servletName, String urlPattern)
+    {
+        List mappings = (List)_servletMappings.get(servletName);
+        if (mappings == null)
+        {
+            mappings = new ArrayList();
+            _servletMappings.put(servletName, mappings);
+        }
+        mappings.add(urlPattern);
+    }
+
+    void addFilterMapping(String filterName, String urlPattern)
+    {
+        List mappings = (List)_filterMappings.get(filterName);
+        if (mappings == null)
+        {
+            mappings = new ArrayList();
+            _filterMappings.put(filterName, mappings);
+        }
+        mappings.add(urlPattern);
+    }
+
+    public List getFacesServletMappings()
+    {
+        if (_facesServletMappings != null) return _facesServletMappings;
+
+        List tempFacesServletMappings = new ArrayList();
+        for (Iterator it = _servlets.entrySet().iterator(); it.hasNext(); )
+        {
+            Map.Entry entry = (Map.Entry)it.next();
+            String servletName = (String)entry.getKey();
+            if (null == entry.getValue())
+            {
+                // the value is null in the case of jsp files listed as servlets
+                // in cactus
+                // <servlet>
+                //   <servlet-name>JspRedirector</servlet-name>
+                //   <jsp-file>/jspRedirector.jsp</jsp-file>
+                // </servlet>
+                continue;
+            }
+            Class servletClass = org.apache.myfaces.shared.util.ClassUtils.simpleClassForName((String)entry.getValue());
+            if (FacesServlet.class.isAssignableFrom(servletClass) ||
+                    DelegatedFacesServlet.class.isAssignableFrom(servletClass) ||
+                    servletClass.getName().equals(_delegateFacesServlet))
+            {
+                List urlPatterns = (List)_servletMappings.get(servletName);
+                if( urlPatterns != null )
+                {
+                    for (Iterator it2 = urlPatterns.iterator(); it2.hasNext(); )
+                    {
+                        String urlpattern = (String)it2.next();
+                        tempFacesServletMappings.add(new org.apache.myfaces.shared_impl.webapp.webxml.ServletMapping(servletName,
+                                                                                                             servletClass,
+                                                                                                             urlpattern));
+                        if (log.isLoggable(Level.FINEST))
+                            log.finest("adding mapping for servlet + " + servletName + " urlpattern = " + urlpattern);
+                    }
+                }
+            }
+            else
+            {
+                if (log.isLoggable(Level.FINEST)) log.finest("ignoring servlet + " + servletName + " " + servletClass + " (no FacesServlet)");
+            }
+        }
+        
+        //Expose to all threads
+        _facesServletMappings = tempFacesServletMappings;
+        
+        return _facesServletMappings;
+    }
+
+    /**
+     * returns a list of {@see #org.apache.myfaces.shared.webapp.webxml.FilterMapping}s representing a
+     * extensions filter entry
+     */
+    public List getFacesExtensionsFilterMappings()
+    {
+        if (_facesExtensionsFilterMappings != null) return _facesExtensionsFilterMappings;
+
+        List tempExtensionsFilterMappings = new ArrayList();
+        for (Iterator it = _filters.entrySet().iterator(); it.hasNext(); )
+        {
+            Map.Entry entry = (Map.Entry)it.next();
+            String filterName = (String)entry.getKey();
+            String filterClassName = (String)entry.getValue();
+            
+            if (!"org.apache.myfaces.component.html.util.ExtensionsFilter".equals(filterClassName) &&
+                !"org.apache.myfaces.webapp.filter.ExtensionsFilter".equals(filterClassName))
+            {
+                // not an extensions filter
+                continue;
+            }
+            
+            Class filterClass = org.apache.myfaces.shared.util.ClassUtils.simpleClassForName(filterClassName);
+            List urlPatterns = (List)_filterMappings.get(filterName);
+            if( urlPatterns != null )
+            {
+                for (Iterator it2 = urlPatterns.iterator(); it2.hasNext(); )
+                {
+                    String urlpattern = (String)it2.next();
+                    tempExtensionsFilterMappings.add(new org.apache.myfaces.shared_impl.webapp.webxml.FilterMapping(
+                        filterName, filterClass, urlpattern));
+                    if (log.isLoggable(Level.FINEST))
+                        log.finest("adding mapping for filter + " + filterName + " urlpattern = " + urlpattern);
+                }
+            }
+        }
+        
+        //Expose to all threads
+        _facesExtensionsFilterMappings = tempExtensionsFilterMappings;
+        
+        return _facesExtensionsFilterMappings;
+    }
+
+    protected void setParsingTime(long parsingTime)
+    {
+        this.parsingTime = parsingTime;
+    }
+    
+    private void setDelegateFacesServlet(String delegateFacesServlet)
+    {
+        this._delegateFacesServlet = delegateFacesServlet;
+    }
+    
+    /**
+     * Sets if, the web.xml contains an error-page entry
+     * @param errorPagePresent
+     */
+    public void setErrorPagePresent(boolean errorPagePresent)
+    {
+        this.errorPagePresent = errorPagePresent;
+    }
+    
+    /**
+     * Determines, if the web.xml contains an error-page entry
+     * @return
+     */
+    public boolean isErrorPagePresent()
+    {
+        return errorPagePresent;
+    }
+
+    protected boolean isOld(ExternalContext context)
+    {
+        if (refreshPeriod > 0) {
+            long ttl = this.parsingTime + refreshPeriod;
+            if (System.currentTimeMillis() > ttl) {
+                long lastModified = WebXmlParser.getWebXmlLastModified(context);
+                return lastModified == 0 || lastModified > ttl;
+            }
+        }
+        return false;
+    }
+
+    private static final String WEB_XML_ATTR = WebXml.class.getName();
+    public static WebXml getWebXml(ExternalContext context)
+    {
+        WebXml webXml = (WebXml)context.getApplicationMap().get(WEB_XML_ATTR);
+        if (webXml == null)
+        {
+            init(context);
+            webXml = (WebXml)context.getApplicationMap().get(WEB_XML_ATTR);
+        }
+        return webXml;
+    }
+
+    /**
+     * should be called when initialising Servlet
+     * @param context
+     */
+    public static void init(ExternalContext context)
+    {
+        WebXmlParser parser = new WebXmlParser(context);
+        WebXml webXml = parser.parse();
+        context.getApplicationMap().put(WEB_XML_ATTR, webXml);
+        MyfacesConfig mfconfig = MyfacesConfig.getCurrentInstance(context);
+        long configRefreshPeriod = mfconfig.getConfigRefreshPeriod();
+        webXml.setParsingTime(System.currentTimeMillis());
+        webXml.setDelegateFacesServlet(mfconfig.getDelegateFacesServlet());
+        refreshPeriod = (configRefreshPeriod * 1000);
+    }
+
+    public static void update(ExternalContext context)
+    {
+        if (getWebXml(context).isOld(context)){
+            WebXml.init(context);
+        }
+    }
+
+}
diff --git a/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/WebXmlParser.java b/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/WebXmlParser.java
new file mode 100644
index 0000000..7cf645f
--- /dev/null
+++ b/impl/src/main/java/org/apache/myfaces/shared_impl/webapp/webxml/WebXmlParser.java
@@ -0,0 +1,373 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.shared_impl.webapp.webxml;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.faces.FacesException;
+import javax.faces.context.ExternalContext;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+
+import org.apache.myfaces.shared.util.ClassUtils;
+import org.apache.myfaces.shared.util.xml.MyFacesErrorHandler;
+import org.apache.myfaces.shared.util.xml.XmlUtils;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.InputSource;
+
+/**
+ * @author Manfred Geiler (latest modification by $Author: lu4242 $)
+ * @version $Revision: 1041085 $ $Date: 2010-12-01 12:15:31 -0500 (Mié, 01 Dic 2010) $
+ */
+public class WebXmlParser
+{
+    //private static final Log log = LogFactory.getLog(WebXmlParser.class);
+    private static final Logger log = Logger.getLogger(WebXmlParser.class.getName());
+
+    /*
+    private static final String JAXP_SCHEMA_LANGUAGE =
+        "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
+    private static final String W3C_XML_SCHEMA =
+        "http://www.w3.org/2001/XMLSchema";
+        */
+
+    private static final String WEB_XML_PATH = "/WEB-INF/web.xml";
+
+    private static final String WEB_APP_2_2_J2EE_SYSTEM_ID = "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd";
+    private static final String WEB_APP_2_2_SYSTEM_ID = "http://java.sun.com/dtd/web-app_2_2.dtd";
+    private static final String WEB_APP_2_2_RESOURCE  = "javax/servlet/resources/web-app_2_2.dtd";
+
+    private static final String WEB_APP_2_3_SYSTEM_ID = "http://java.sun.com/dtd/web-app_2_3.dtd";
+    private static final String WEB_APP_2_3_RESOURCE  = "javax/servlet/resources/web-app_2_3.dtd";
+    
+    private ExternalContext _context;
+    private org.apache.myfaces.shared_impl.webapp.webxml.WebXml _webXml;
+
+    public WebXmlParser(ExternalContext context)
+    {
+        _context = context;
+    }
+
+    public WebXml parse()
+    {
+        _webXml = new WebXml();
+
+        try
+        {
+            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+            dbf.setIgnoringElementContentWhitespace(true);
+            dbf.setIgnoringComments(true);
+            dbf.setNamespaceAware(true);
+            dbf.setValidating(false);
+//            dbf.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
+
+            DocumentBuilder db = dbf.newDocumentBuilder();
+            db.setEntityResolver(new _EntityResolver());
+            db.setErrorHandler(new MyFacesErrorHandler(log));
+
+            InputSource is = createContextInputSource(null, WEB_XML_PATH);
+
+            if(is==null)
+            {
+                URL url = _context.getResource(WEB_XML_PATH);
+                log.fine("No web-xml found at : "+(url==null?" null ":url.toString()));
+                return _webXml;
+            }
+
+            Document document = db.parse(is);
+
+            Element webAppElem = document.getDocumentElement();
+            if (webAppElem == null ||
+                !webAppElem.getNodeName().equals("web-app"))
+            {
+                throw new FacesException("No valid web-app root element found!");
+            }
+
+            readWebApp(webAppElem);
+            
+            return _webXml;
+        }
+        catch (Exception e)
+        {
+            log.log(Level.SEVERE, "Unable to parse web.xml", e);
+            throw new FacesException(e);
+        }
+    }
+
+    public static long getWebXmlLastModified(ExternalContext context)
+    {
+        try {
+            URL url = context.getResource(WEB_XML_PATH);
+            if (url != null)
+                return url.openConnection().getLastModified();
+        } catch (IOException e) {
+            log.log(Level.SEVERE, "Could not find web.xml in path " + WEB_XML_PATH);
+        }
+        return 0L;
+    }
+
+
+    private InputSource createContextInputSource(String publicId, String systemId)
+    {
+        InputStream inStream = _context.getResourceAsStream(systemId);
+        if (inStream == null)
+        {
+            // there is no such entity
+            return null;
+        }
+        InputSource is = new InputSource(inStream);
+        is.setPublicId(publicId);
+        is.setSystemId(systemId);
+        //the next line was removed - encoding should be determined automatically out of the inputStream
+        //DEFAULT_ENCODING was ISO-8859-1
+        //is.setEncoding(DEFAULT_ENCODING);
+        return is;
+    }
+
+    private InputSource createClassloaderInputSource(String publicId, String systemId)
+    {
+        InputStream inStream = ClassUtils.getResourceAsStream(systemId);
+        if (inStream == null)
+        {
+            // there is no such entity
+            return null;
+        }
+        InputSource is = new InputSource(inStream);
+        is.setPublicId(publicId);
+        is.setSystemId(systemId);
+        //the next line was removed - encoding should be determined automatically out of the inputStream
+        //encoding should be determined automatically out of the inputStream
+        //DEFAULT_ENCODING was ISO-8859-1
+        //is.setEncoding(DEFAULT_ENCODING);
+        return is;
+    }
+
+    private class _EntityResolver implements EntityResolver
+    {
+        public InputSource resolveEntity(String publicId, String systemId) throws IOException
+        {
+            if (systemId == null)
+            {
+                throw new UnsupportedOperationException("systemId must not be null");
+            }
+
+            if (systemId.equals(WebXmlParser.WEB_APP_2_2_SYSTEM_ID) ||
+                systemId.equals(WebXmlParser.WEB_APP_2_2_J2EE_SYSTEM_ID))
+            {
+                //Load DTD from servlet.jar
+                return createClassloaderInputSource(publicId, WebXmlParser.WEB_APP_2_2_RESOURCE);
+            }
+            else if (systemId.equals(WebXmlParser.WEB_APP_2_3_SYSTEM_ID))
+            {
+                //Load DTD from servlet.jar
+                return createClassloaderInputSource(publicId, WebXmlParser.WEB_APP_2_3_RESOURCE);
+            }
+            else
+            {
+                //Load additional entities from web context
+                return createContextInputSource(publicId, systemId);
+            }
+        }
+
+    }
+
+
+    private void readWebApp(Element webAppElem)
+    {
+        NodeList nodeList = webAppElem.getChildNodes();
+        for (int i = 0, len = nodeList.getLength(); i < len; i++)
+        {
+            Node n = nodeList.item(i);
+            if (n.getNodeType() == Node.ELEMENT_NODE)
+            {
+                if (n.getNodeName().equals("servlet"))
+                {
+                    readServlet((Element)n);
+                }
+                if (n.getNodeName().equals("servlet-mapping"))
+                {
+                    readServletMapping((Element)n);
+                }
+                if (n.getNodeName().equals("filter"))
+                {
+                    readFilter((Element)n);
+                }
+                if (n.getNodeName().equals("filter-mapping"))
+                {
+                    readFilterMapping((Element)n);
+                }
+                if (n.getNodeName().equals("error-page"))
+                {
+                    _webXml.setErrorPagePresent(true);
+                }
+            }
+            else
+            {
+                if (log.isLoggable(Level.FINE)) log.fine("Ignored node '" + n.getNodeName() + "' of type " + n.getNodeType());
+            }
+        }
+    }
+
+    private void readServlet(Element servletElem)
+    {
+        String servletName = null;
+        String servletClass = null;
+        NodeList nodeList = servletElem.getChildNodes();
+        for (int i = 0, len = nodeList.getLength(); i < len; i++)
+        {
+            Node n = nodeList.item(i);
+            if (n.getNodeType() == Node.ELEMENT_NODE)
+            {
+                if (n.getNodeName().equals("servlet-name"))
+                {
+                    servletName = XmlUtils.getElementText((Element)n);
+                }
+                else if (n.getNodeName().equals("servlet-class"))
+                {
+                    servletClass = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n).trim();
+                }
+                else if (n.getNodeName().equals("description") || n.getNodeName().equals("load-on-startup") || n.getNodeName().equals("init-param"))
+                {
+                    //ignore
+                }
+                else
+                {
+                    if (log.isLoggable(Level.FINE)) log.fine("Ignored element '" + n.getNodeName() + "' as child of '" + servletElem.getNodeName() + "'.");
+                }
+            }
+            else
+            {
+                if (log.isLoggable(Level.FINE)) log.fine("Ignored node '" + n.getNodeName() + "' of type " + n.getNodeType());
+            }
+        }
+        _webXml.addServlet(servletName, servletClass);
+    }
+
+
+    private void readServletMapping(Element servletMappingElem)
+    {
+        String servletName = null;
+        String urlPattern = null;
+        NodeList nodeList = servletMappingElem.getChildNodes();
+        for (int i = 0, len = nodeList.getLength(); i < len; i++)
+        {
+            Node n = nodeList.item(i);
+            if (n.getNodeType() == Node.ELEMENT_NODE)
+            {
+                if (n.getNodeName().equals("servlet-name"))
+                {
+                    servletName = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n);
+                }
+                else if (n.getNodeName().equals("url-pattern"))
+                {
+                    urlPattern = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n).trim();
+                }
+                else
+                {
+                    if (log.isLoggable(Level.FINE)) log.fine("Ignored element '" + n.getNodeName() + "' as child of '" + servletMappingElem.getNodeName() + "'.");
+                }
+            }
+            else
+            {
+                if (log.isLoggable(Level.FINE)) log.fine("Ignored node '" + n.getNodeName() + "' of type " + n.getNodeType());
+            }
+        }
+        urlPattern = urlPattern.trim();
+        _webXml.addServletMapping(servletName, urlPattern);
+    }
+
+    private void readFilter(Element filterElem)
+    {
+        String filterName = null;
+        String filterClass = null;
+        NodeList nodeList = filterElem.getChildNodes();
+        for (int i = 0, len = nodeList.getLength(); i < len; i++)
+        {
+            Node n = nodeList.item(i);
+            if (n.getNodeType() == Node.ELEMENT_NODE)
+            {
+                if (n.getNodeName().equals("filter-name"))
+                {
+                    filterName = XmlUtils.getElementText((Element)n).trim();
+                }
+                else if (n.getNodeName().equals("filter-class"))
+                {
+                    filterClass = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n).trim();
+                }
+                else if (n.getNodeName().equals("description") || n.getNodeName().equals("init-param"))
+                {
+                    //ignore
+                }
+                else
+                {
+                    if (log.isLoggable(Level.FINE)) log.fine("Ignored element '" + n.getNodeName() + "' as child of '" + filterElem.getNodeName() + "'.");
+                }
+            }
+            else
+            {
+                if (log.isLoggable(Level.FINE)) log.fine("Ignored node '" + n.getNodeName() + "' of type " + n.getNodeType());
+            }
+        }
+        _webXml.addFilter(filterName, filterClass);
+    }
+
+
+    private void readFilterMapping(Element filterMappingElem)
+    {
+        String filterName = null;
+        String urlPattern = null;
+        NodeList nodeList = filterMappingElem.getChildNodes();
+        for (int i = 0, len = nodeList.getLength(); i < len; i++)
+        {
+            Node n = nodeList.item(i);
+            if (n.getNodeType() == Node.ELEMENT_NODE)
+            {
+                if (n.getNodeName().equals("filter-name"))
+                {
+                    filterName = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n).trim();
+                }
+                else if (n.getNodeName().equals("url-pattern"))
+                {
+                    urlPattern = org.apache.myfaces.shared.util.xml.XmlUtils.getElementText((Element)n).trim();
+                }
+                else if (n.getNodeName().equals("servlet-name"))
+                {
+                    // we are not interested in servlet-name based mapping - for now
+                }
+                else
+                {
+                    if (log.isLoggable(Level.FINE)) log.fine("Ignored element '" + n.getNodeName() + "' as child of '" + filterMappingElem.getNodeName() + "'.");
+                }
+            }
+            else
+            {
+                if (log.isLoggable(Level.FINE)) log.fine("Ignored node '" + n.getNodeName() + "' of type " + n.getNodeType());
+            }
+        }
+        _webXml.addFilterMapping(filterName, urlPattern);
+    }
+}
diff --git a/impl/src/main/java/org/apache/myfaces/spi/FactoryFinderProviderFactory.java b/impl/src/main/java/org/apache/myfaces/spi/FactoryFinderProviderFactory.java
index ecacfe8..f2ce065 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/FactoryFinderProviderFactory.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/FactoryFinderProviderFactory.java
@@ -22,7 +22,7 @@ import java.lang.reflect.Field;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  * <p>{@link javax.faces.FactoryFinder} is a class with three methods:</p>
diff --git a/impl/src/main/java/org/apache/myfaces/spi/ServiceProviderFinderFactory.java b/impl/src/main/java/org/apache/myfaces/spi/ServiceProviderFinderFactory.java
index 24c7665..d104cbd 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/ServiceProviderFinderFactory.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/ServiceProviderFinderFactory.java
@@ -23,7 +23,7 @@ import javax.faces.context.ExternalContext;
 import javax.servlet.ServletContext;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.impl.DefaultServiceProviderFinder;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/spi/WebConfigProvider.java b/impl/src/main/java/org/apache/myfaces/spi/WebConfigProvider.java
index 21af8c6..b4a90cd 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/WebConfigProvider.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/WebConfigProvider.java
@@ -38,7 +38,7 @@ public abstract class WebConfigProvider
      * </p>
      * <ol>
      *   <li>Mappings related to registered servlet class javax.faces.webapp.FacesServlet.</li>
-     *   <li>Mappings related to registered servlet class implementing org.apache.myfaces.shared_impl.webapp.webxml.DelegatedFacesServlet interface.</li>
+     *   <li>Mappings related to registered servlet class implementing org.apache.myfaces.shared.webapp.webxml.DelegatedFacesServlet interface.</li>
      *   <li>Mappings related to registered servlet class registered using org.apache.myfaces.DELEGATE_FACES_SERVLET web config param.</li>
      * </ol>
      * 
diff --git a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultAnnotationProviderFactory.java b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultAnnotationProviderFactory.java
index 424f450..85ce481 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultAnnotationProviderFactory.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultAnnotationProviderFactory.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.spi.impl;
 
 import org.apache.myfaces.config.annotation.DefaultAnnotationProvider;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.AnnotationProvider;
 import org.apache.myfaces.spi.AnnotationProviderFactory;
 import org.apache.myfaces.spi.ServiceProviderFinderFactory;
diff --git a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFaceletConfigResourceProviderFactory.java b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFaceletConfigResourceProviderFactory.java
index f89f37c..4497250 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFaceletConfigResourceProviderFactory.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFaceletConfigResourceProviderFactory.java
@@ -18,7 +18,7 @@
  */
 package org.apache.myfaces.spi.impl;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.FaceletConfigResourceProvider;
 import org.apache.myfaces.spi.FaceletConfigResourceProviderFactory;
 import org.apache.myfaces.spi.ServiceProviderFinderFactory;
diff --git a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigResourceProviderFactory.java b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigResourceProviderFactory.java
index 3a9be3f..01358cf 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigResourceProviderFactory.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigResourceProviderFactory.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.spi.impl;
 
 import org.apache.myfaces.config.DefaultFacesConfigResourceProvider;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.FacesConfigResourceProvider;
 import org.apache.myfaces.spi.FacesConfigResourceProviderFactory;
 import org.apache.myfaces.spi.ServiceProviderFinderFactory;
diff --git a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigurationMergerFactory.java b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigurationMergerFactory.java
index d5278e3..792aaa5 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigurationMergerFactory.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigurationMergerFactory.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.spi.impl;
 
 import org.apache.myfaces.config.DefaultFacesConfigurationMerger;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.FacesConfigurationMerger;
 import org.apache.myfaces.spi.FacesConfigurationMergerFactory;
 import org.apache.myfaces.spi.ServiceProviderFinderFactory;
diff --git a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigurationProviderFactory.java b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigurationProviderFactory.java
index 661bc24..7895ecc 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigurationProviderFactory.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultFacesConfigurationProviderFactory.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.spi.impl;
 
 import org.apache.myfaces.config.DefaultFacesConfigurationProvider;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.FacesConfigurationProvider;
 import org.apache.myfaces.spi.FacesConfigurationProviderFactory;
 import org.apache.myfaces.spi.ServiceProviderFinderFactory;
diff --git a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultServiceProviderFinder.java b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultServiceProviderFinder.java
index 75e80c3..d0ae445 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultServiceProviderFinder.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultServiceProviderFinder.java
@@ -31,7 +31,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.ServiceProviderFinder;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultWebConfigProviderFactory.java b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultWebConfigProviderFactory.java
index 39cc023..d09fc91 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultWebConfigProviderFactory.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/impl/DefaultWebConfigProviderFactory.java
@@ -28,7 +28,7 @@ import java.util.logging.Logger;
 import javax.faces.FacesException;
 import javax.faces.context.ExternalContext;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.ServiceProviderFinderFactory;
 import org.apache.myfaces.spi.WebConfigProvider;
 import org.apache.myfaces.spi.WebConfigProviderFactory;
diff --git a/impl/src/main/java/org/apache/myfaces/spi/impl/SpiUtils.java b/impl/src/main/java/org/apache/myfaces/spi/impl/SpiUtils.java
index d97a3d2..640a41e 100644
--- a/impl/src/main/java/org/apache/myfaces/spi/impl/SpiUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/spi/impl/SpiUtils.java
@@ -24,7 +24,7 @@ import java.util.logging.Logger;
 
 import javax.faces.context.ExternalContext;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.ServiceProviderFinderFactory;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/ConvertDateTimeTag.java b/impl/src/main/java/org/apache/myfaces/taglib/core/ConvertDateTimeTag.java
index 426072a..2ec60ad 100755
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/ConvertDateTimeTag.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/ConvertDateTimeTag.java
@@ -18,8 +18,8 @@
  */
 package org.apache.myfaces.taglib.core;
 
-import org.apache.myfaces.shared_impl.taglib.UIComponentELTagUtils;
-import org.apache.myfaces.shared_impl.util.LocaleUtils;
+import org.apache.myfaces.shared.taglib.UIComponentELTagUtils;
+import org.apache.myfaces.shared.util.LocaleUtils;
 
 import javax.el.ELContext;
 import javax.el.ValueExpression;
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/ConvertNumberTag.java b/impl/src/main/java/org/apache/myfaces/taglib/core/ConvertNumberTag.java
index a80e7bd..8bb1276 100755
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/ConvertNumberTag.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/ConvertNumberTag.java
@@ -18,7 +18,7 @@
  */
 package org.apache.myfaces.taglib.core;
 
-import org.apache.myfaces.shared_impl.taglib.UIComponentELTagUtils;
+import org.apache.myfaces.shared.taglib.UIComponentELTagUtils;
 
 import javax.el.ELContext;
 import javax.el.ValueExpression;
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/DelegateActionListener.java b/impl/src/main/java/org/apache/myfaces/taglib/core/DelegateActionListener.java
index 282dfd8..bdd7b73 100644
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/DelegateActionListener.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/DelegateActionListener.java
@@ -27,7 +27,7 @@ import javax.faces.event.AbortProcessingException;
 import javax.faces.event.ActionEvent;
 import javax.faces.event.ActionListener;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/GenericListenerTag.java b/impl/src/main/java/org/apache/myfaces/taglib/core/GenericListenerTag.java
index e5e3fe2..0389705 100644
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/GenericListenerTag.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/GenericListenerTag.java
@@ -28,7 +28,7 @@ import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.tagext.Tag;
 import javax.servlet.jsp.tagext.TagSupport;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  * @author Andreas Berger (latest modification by $Author$)
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/LoadBundleTag.java b/impl/src/main/java/org/apache/myfaces/taglib/core/LoadBundleTag.java
index 86faa7b..3f9e4e7 100755
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/LoadBundleTag.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/LoadBundleTag.java
@@ -38,7 +38,7 @@ import javax.el.ValueExpression;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFJspAttribute;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFJspTag;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  * Loads a resource bundle and saves it as a variable in the request scope.
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/ParamTag.java b/impl/src/main/java/org/apache/myfaces/taglib/core/ParamTag.java
index f8e8eff..e2c5f6b 100755
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/ParamTag.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/ParamTag.java
@@ -18,7 +18,7 @@
  */
 package org.apache.myfaces.taglib.core;
 
-import org.apache.myfaces.shared_impl.taglib.UIComponentELTagBase;
+import org.apache.myfaces.shared.taglib.UIComponentELTagBase;
 
 import javax.faces.component.UIComponent;
 import javax.el.ValueExpression;
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/PhaseListenerTag.java b/impl/src/main/java/org/apache/myfaces/taglib/core/PhaseListenerTag.java
index a87f6c8..02d24f2 100644
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/PhaseListenerTag.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/PhaseListenerTag.java
@@ -36,7 +36,7 @@ import javax.servlet.jsp.tagext.TagSupport;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFJspAttribute;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFJspTag;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 /**
  * Register a PhaseListener instance
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/SelectItemTag.java b/impl/src/main/java/org/apache/myfaces/taglib/core/SelectItemTag.java
index 6dd779e..e50ee5c 100755
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/SelectItemTag.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/SelectItemTag.java
@@ -18,7 +18,7 @@
  */
 package org.apache.myfaces.taglib.core;
 
-import org.apache.myfaces.shared_impl.taglib.core.SelectItemTagBase;
+import org.apache.myfaces.shared.taglib.core.SelectItemTagBase;
 
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/VerbatimTag.java b/impl/src/main/java/org/apache/myfaces/taglib/core/VerbatimTag.java
index ae47235..ae1f1ea 100755
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/VerbatimTag.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/VerbatimTag.java
@@ -20,8 +20,8 @@ package org.apache.myfaces.taglib.core;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFJspAttribute;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFJspTag;
-import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
-import org.apache.myfaces.shared_impl.taglib.UIComponentELTagBase;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.taglib.UIComponentELTagBase;
 
 import javax.el.ValueExpression;
 import javax.faces.component.UIComponent;
diff --git a/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java b/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java
index d7ae7d3..08963b6 100755
--- a/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java
+++ b/impl/src/main/java/org/apache/myfaces/taglib/core/ViewTag.java
@@ -36,7 +36,7 @@ import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.jstl.core.Config;
 
 import org.apache.myfaces.application.jsp.ServletViewResponseWrapper;
-import org.apache.myfaces.shared_impl.util.LocaleUtils;
+import org.apache.myfaces.shared.util.LocaleUtils;
 
 /**
  * @author Manfred Geiler (latest modification by $Author$)
diff --git a/impl/src/main/java/org/apache/myfaces/util/ContainerUtils.java b/impl/src/main/java/org/apache/myfaces/util/ContainerUtils.java
index 2cf2780..f842512 100644
--- a/impl/src/main/java/org/apache/myfaces/util/ContainerUtils.java
+++ b/impl/src/main/java/org/apache/myfaces/util/ContainerUtils.java
@@ -21,7 +21,7 @@ package org.apache.myfaces.util;
 import javax.faces.context.ExternalContext;
 import javax.servlet.ServletContext;
 
-import org.apache.myfaces.shared_impl.util.ExternalContextUtils;
+import org.apache.myfaces.shared.util.ExternalContextUtils;
 
 /**
  * Utilities for determining the current container and for the unified
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementHelper.java b/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementHelper.java
index 8434720..16e92ab 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementHelper.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementHelper.java
@@ -43,8 +43,8 @@ import javax.faces.context.FacesContext;
 
 import org.apache.commons.collections.map.AbstractReferenceMap;
 import org.apache.commons.collections.map.ReferenceMap;
-import org.apache.myfaces.shared_impl.renderkit.RendererUtils;
-import org.apache.myfaces.shared_impl.util.MyFacesObjectInputStream;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.util.MyFacesObjectInputStream;
 
 /**
  * This helper class contains methods used by DefaultFaceletsStateManagementStrategy that comes
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java b/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java
index fbfe680..1394fb1 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/DefaultFaceletsStateManagementStrategy.java
@@ -49,9 +49,9 @@ import javax.faces.view.ViewDeclarationLanguageFactory;
 import javax.faces.view.ViewMetadata;
 
 import org.apache.myfaces.application.StateManagerImpl;
-import org.apache.myfaces.shared_impl.renderkit.RendererUtils;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
-import org.apache.myfaces.shared_impl.util.HashMapUtils;
+import org.apache.myfaces.shared.renderkit.RendererUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
+import org.apache.myfaces.shared.util.HashMapUtils;
 
 /**
  * This class implements partial state saving feature when facelets
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java b/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java
index b31813d..80bfd2e 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/FaceletViewDeclarationLanguage.java
@@ -85,13 +85,13 @@ import javax.servlet.http.HttpServletResponse;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
 import org.apache.myfaces.config.RuntimeConfig;
-import org.apache.myfaces.shared_impl.application.DefaultViewHandlerSupport;
-import org.apache.myfaces.shared_impl.application.ViewHandlerSupport;
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
-import org.apache.myfaces.shared_impl.util.StringUtils;
-import org.apache.myfaces.shared_impl.util.WebConfigParamUtils;
-import org.apache.myfaces.shared_impl.view.ViewDeclarationLanguageBase;
+import org.apache.myfaces.shared.application.DefaultViewHandlerSupport;
+import org.apache.myfaces.shared.util.StringUtils;
+import org.apache.myfaces.shared.view.ViewDeclarationLanguageBase;
+import org.apache.myfaces.shared.application.ViewHandlerSupport;
+import org.apache.myfaces.shared.config.MyfacesConfig;
+import org.apache.myfaces.shared.util.ClassUtils;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
 import org.apache.myfaces.view.ViewDeclarationLanguageStrategy;
 import org.apache.myfaces.view.ViewMetadataBase;
 import org.apache.myfaces.view.facelets.FaceletViewHandler.NullWriter;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/BodyEndElementInstruction.java b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/BodyEndElementInstruction.java
index 3e47563..035df1d 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/BodyEndElementInstruction.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/BodyEndElementInstruction.java
@@ -25,7 +25,7 @@ import javax.el.ExpressionFactory;
 import javax.faces.application.ProjectStage;
 import javax.faces.context.FacesContext;
 
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlRendererUtils;
+import org.apache.myfaces.shared.renderkit.html.HtmlRendererUtils;
 
 final class BodyEndElementInstruction implements Instruction
 {
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/DefaultFaceletConfigResourceProvider.java b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/DefaultFaceletConfigResourceProvider.java
index 0b0f682..716856c 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/DefaultFaceletConfigResourceProvider.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/DefaultFaceletConfigResourceProvider.java
@@ -26,7 +26,7 @@ import java.util.List;
 
 import javax.faces.context.ExternalContext;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.FaceletConfigResourceProvider;
 import org.apache.myfaces.view.facelets.util.Classpath;
 
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/SAXCompiler.java b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/SAXCompiler.java
index 952a9fc..209dcc0 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/SAXCompiler.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/SAXCompiler.java
@@ -41,7 +41,7 @@ import javax.xml.parsers.SAXParserFactory;
 
 import org.apache.myfaces.config.RuntimeConfig;
 import org.apache.myfaces.config.element.FaceletsProcessing;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.view.facelets.tag.TagAttributeImpl;
 import org.apache.myfaces.view.facelets.tag.TagAttributesImpl;
 import org.apache.myfaces.view.facelets.tag.composite.CompositeLibrary;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TagLibraryConfig.java b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TagLibraryConfig.java
index f3a01bd..263479c 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TagLibraryConfig.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TagLibraryConfig.java
@@ -42,8 +42,8 @@ import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
 
 import org.apache.myfaces.config.ConfigFilesXmlValidationUtils;
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.config.MyfacesConfig;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.spi.FaceletConfigResourceProvider;
 import org.apache.myfaces.spi.FaceletConfigResourceProviderFactory;
 import org.apache.myfaces.view.facelets.tag.AbstractTagLibrary;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TextUnit.java b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TextUnit.java
index dd86d4c..8971efc 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TextUnit.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/compiler/TextUnit.java
@@ -31,7 +31,7 @@ import javax.faces.view.facelets.Tag;
 import javax.faces.view.facelets.TagAttribute;
 import javax.faces.view.facelets.TagException;
 
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
+import org.apache.myfaces.shared.renderkit.html.HTML;
 import org.apache.myfaces.view.facelets.el.ELText;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCacheFactoryImpl.java b/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCacheFactoryImpl.java
index 10fa203..25170a4 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCacheFactoryImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCacheFactoryImpl.java
@@ -24,7 +24,7 @@ import javax.faces.context.FacesContext;
 import javax.faces.view.facelets.FaceletCache;
 import javax.faces.view.facelets.FaceletCacheFactory;
 
-import org.apache.myfaces.shared_impl.util.WebConfigParamUtils;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
 import org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java b/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java
index 5cc11c9..bcb13aa 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/impl/FaceletCompositionContextImpl.java
@@ -19,7 +19,7 @@
 package org.apache.myfaces.view.facelets.impl;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
-import org.apache.myfaces.shared_impl.util.WebConfigParamUtils;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
 import org.apache.myfaces.view.facelets.ELExpressionCacheMode;
 import org.apache.myfaces.view.facelets.FaceletCompositionContext;
 import org.apache.myfaces.view.facelets.FaceletFactory;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java
index 8b6b79e..d8f56de 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/MetaRulesetImpl.java
@@ -18,7 +18,7 @@
  */
 package org.apache.myfaces.view.facelets.tag;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.view.facelets.util.ParameterCheck;
 
 import javax.faces.view.facelets.FaceletContext;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttachedObjectTargetImpl.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttachedObjectTargetImpl.java
index 3846d1a..5d2ed43 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttachedObjectTargetImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/AttachedObjectTargetImpl.java
@@ -28,7 +28,7 @@ import javax.faces.component.UIComponent;
 import javax.faces.context.FacesContext;
 import javax.faces.view.AttachedObjectTarget;
 
-import org.apache.myfaces.shared_impl.util.StringUtils;
+import org.apache.myfaces.shared.util.StringUtils;
 
 /**
  * 
@@ -105,7 +105,7 @@ public class AttachedObjectTargetImpl implements AttachedObjectTarget, Serializa
         {
             return StringUtils.splitShortString((String) _targets.getValue(context.getELContext()), ' ');
         }
-        return org.apache.myfaces.shared_impl.util.ArrayUtils.EMPTY_STRING_ARRAY;
+        return org.apache.myfaces.shared.util.ArrayUtils.EMPTY_STRING_ARRAY;
     }
     
     public void setName(ValueExpression ve)
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/ClientBehaviorAttachedObjectTargetImpl.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/ClientBehaviorAttachedObjectTargetImpl.java
index af998d5..ae75fef 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/ClientBehaviorAttachedObjectTargetImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/ClientBehaviorAttachedObjectTargetImpl.java
@@ -29,7 +29,7 @@ import javax.faces.component.UIComponent;
 import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.context.FacesContext;
 
-import org.apache.myfaces.shared_impl.util.StringUtils;
+import org.apache.myfaces.shared.util.StringUtils;
 
 /**
  * @author Leonardo Uribe (latest modification by $Author: lu4242 $)
@@ -125,7 +125,7 @@ public class ClientBehaviorAttachedObjectTargetImpl
         {
             return StringUtils.splitShortString((String) _targets.getValue(context.getELContext()), ' ');
         }
-        return org.apache.myfaces.shared_impl.util.ArrayUtils.EMPTY_STRING_ARRAY;
+        return org.apache.myfaces.shared.util.ArrayUtils.EMPTY_STRING_ARRAY;
     }
     
     public void setName(ValueExpression name)
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java
index 15afe4a..a1cf027 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/composite/CompositeResourceLibrary.java
@@ -34,9 +34,9 @@ import javax.faces.view.facelets.Tag;
 import javax.faces.view.facelets.TagConfig;
 import javax.faces.view.facelets.TagHandler;
 
-import org.apache.myfaces.shared_impl.util.ArrayUtils;
-import org.apache.myfaces.shared_impl.util.StringUtils;
-import org.apache.myfaces.shared_impl.util.WebConfigParamUtils;
+import org.apache.myfaces.shared.util.StringUtils;
+import org.apache.myfaces.shared.util.ArrayUtils;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
 import org.apache.myfaces.view.facelets.tag.TagLibrary;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ComponentSupport.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ComponentSupport.java
index fba7621..769ab12 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ComponentSupport.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ComponentSupport.java
@@ -33,7 +33,7 @@ import javax.faces.view.facelets.FaceletContext;
 import javax.faces.view.facelets.TagAttribute;
 import javax.faces.view.facelets.TagAttributeException;
 
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
+import org.apache.myfaces.shared.config.MyfacesConfig;
 import org.apache.myfaces.view.facelets.ComponentState;
 import org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy;
 import org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ValidatorTagHandlerDelegate.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ValidatorTagHandlerDelegate.java
index aa4b760..be4a231 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ValidatorTagHandlerDelegate.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/ValidatorTagHandlerDelegate.java
@@ -37,7 +37,7 @@ import javax.faces.view.facelets.TagException;
 import javax.faces.view.facelets.TagHandlerDelegate;
 import javax.faces.view.facelets.ValidatorHandler;
 
-import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
 import org.apache.myfaces.view.facelets.FaceletCompositionContext;
 import org.apache.myfaces.view.facelets.compiler.FaceletsCompilerUtils;
 import org.apache.myfaces.view.facelets.tag.MetaRulesetImpl;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/ActionListenerHandler.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/ActionListenerHandler.java
index 523867f..b0b26fe 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/ActionListenerHandler.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/ActionListenerHandler.java
@@ -42,7 +42,7 @@ import javax.faces.view.facelets.TagHandler;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletAttribute;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletTag;
-import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
 import org.apache.myfaces.view.facelets.FaceletCompositionContext;
 import org.apache.myfaces.view.facelets.util.ReflectionUtil;
 
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java
index c0c78ae..a852546 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/AjaxHandler.java
@@ -46,8 +46,8 @@ import javax.faces.view.facelets.TagHandler;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletAttribute;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletTag;
-import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
-import org.apache.myfaces.shared_impl.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.renderkit.html.util.ResourceUtils;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
 import org.apache.myfaces.view.facelets.AbstractFaceletContext;
 import org.apache.myfaces.view.facelets.FaceletCompositionContext;
 import org.apache.myfaces.view.facelets.tag.TagHandlerUtils;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/LoadBundleHandler.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/LoadBundleHandler.java
index de868ee..e7c54d3 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/LoadBundleHandler.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/LoadBundleHandler.java
@@ -41,7 +41,7 @@ import javax.faces.view.facelets.TagConfig;
 import javax.faces.view.facelets.TagHandler;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletTag;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.view.facelets.tag.jsf.ComponentSupport;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/SelectItemHandler.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/SelectItemHandler.java
index c740d48..8a08db1 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/SelectItemHandler.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/jsf/core/SelectItemHandler.java
@@ -22,7 +22,7 @@ import javax.faces.view.facelets.ComponentConfig;
 import javax.faces.view.facelets.ComponentHandler;
 import javax.faces.view.facelets.MetaRuleset;
 
-import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
 
 public class SelectItemHandler extends ComponentHandler
 {
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/IncludeHandler.java b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/IncludeHandler.java
index d20dc19..3f4aecd 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/IncludeHandler.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/tag/ui/IncludeHandler.java
@@ -36,7 +36,7 @@ import javax.faces.view.facelets.TagHandler;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletAttribute;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFFaceletTag;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.view.facelets.AbstractFaceletContext;
 import org.apache.myfaces.view.facelets.FaceletCompositionContext;
 import org.apache.myfaces.view.facelets.el.VariableMapperWrapper;
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/util/Classpath.java b/impl/src/main/java/org/apache/myfaces/view/facelets/util/Classpath.java
index 2be55b6..790e924 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/util/Classpath.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/util/Classpath.java
@@ -33,7 +33,7 @@ import java.util.jar.JarFile;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import java.nio.ByteBuffer;
 import java.nio.charset.Charset;
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/view/facelets/util/ReflectionUtil.java b/impl/src/main/java/org/apache/myfaces/view/facelets/util/ReflectionUtil.java
index c6057ce..9288e0e 100644
--- a/impl/src/main/java/org/apache/myfaces/view/facelets/util/ReflectionUtil.java
+++ b/impl/src/main/java/org/apache/myfaces/view/facelets/util/ReflectionUtil.java
@@ -21,8 +21,8 @@ package org.apache.myfaces.view.facelets.util;
 import java.lang.reflect.Array;
 import java.util.Arrays;
 
-import org.apache.myfaces.shared_impl.util.ClassLoaderUtils;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassLoaderUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 public class ReflectionUtil
 {
diff --git a/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java b/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java
index 8422ef4..a7f27fb 100644
--- a/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java
+++ b/impl/src/main/java/org/apache/myfaces/view/jsp/JspViewDeclarationLanguage.java
@@ -35,7 +35,7 @@ import javax.servlet.jsp.jstl.core.Config;
 
 import org.apache.myfaces.application.jsp.ServletViewResponseWrapper;
 import org.apache.myfaces.renderkit.StateCacheUtils;
-import org.apache.myfaces.shared_impl.view.JspViewDeclarationLanguageBase;
+import org.apache.myfaces.shared.view.JspViewDeclarationLanguageBase;
 import org.apache.myfaces.view.facelets.tag.composite.CompositeLibrary;
 import org.apache.myfaces.view.facelets.tag.jsf.core.CoreLibrary;
 import org.apache.myfaces.view.facelets.tag.jsf.html.HtmlLibrary;
diff --git a/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java b/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
index 108d634..5cb2054 100644
--- a/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
+++ b/impl/src/main/java/org/apache/myfaces/webapp/AbstractFacesInitializer.java
@@ -27,9 +27,9 @@ import org.apache.myfaces.config.element.ManagedBean;
 import org.apache.myfaces.context.ReleaseableExternalContext;
 import org.apache.myfaces.context.servlet.StartupFacesContextImpl;
 import org.apache.myfaces.context.servlet.StartupServletExternalContextImpl;
-import org.apache.myfaces.shared_impl.context.ExceptionHandlerImpl;
-import org.apache.myfaces.shared_impl.util.StateUtils;
-import org.apache.myfaces.shared_impl.util.WebConfigParamUtils;
+import org.apache.myfaces.shared.util.StateUtils;
+import org.apache.myfaces.shared.context.ExceptionHandlerImpl;
+import org.apache.myfaces.shared.util.WebConfigParamUtils;
 import org.apache.myfaces.spi.WebConfigProvider;
 import org.apache.myfaces.spi.WebConfigProviderFactory;
 import org.apache.myfaces.view.facelets.tag.MetaRulesetImpl;
diff --git a/impl/src/main/java/org/apache/myfaces/webapp/FacesInitializerFactory.java b/impl/src/main/java/org/apache/myfaces/webapp/FacesInitializerFactory.java
index fcddb8b..2b5e42f 100644
--- a/impl/src/main/java/org/apache/myfaces/webapp/FacesInitializerFactory.java
+++ b/impl/src/main/java/org/apache/myfaces/webapp/FacesInitializerFactory.java
@@ -22,7 +22,7 @@ import javax.faces.FacesException;
 import javax.servlet.ServletContext;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.util.ContainerUtils;
 
 /**
diff --git a/impl/src/main/java/org/apache/myfaces/webapp/StartupServletContextListener.java b/impl/src/main/java/org/apache/myfaces/webapp/StartupServletContextListener.java
index 96411ed..031b959 100755
--- a/impl/src/main/java/org/apache/myfaces/webapp/StartupServletContextListener.java
+++ b/impl/src/main/java/org/apache/myfaces/webapp/StartupServletContextListener.java
@@ -20,7 +20,7 @@ package org.apache.myfaces.webapp;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
 import org.apache.myfaces.config.annotation.LifecycleProviderFactory;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 
 import javax.faces.FactoryFinder;
 import javax.faces.context.ExternalContext;
diff --git a/impl/src/test/java/org/apache/myfaces/application/StateManagerImplTest.java b/impl/src/test/java/org/apache/myfaces/application/StateManagerImplTest.java
index 6c57da0..f93f64d 100644
--- a/impl/src/test/java/org/apache/myfaces/application/StateManagerImplTest.java
+++ b/impl/src/test/java/org/apache/myfaces/application/StateManagerImplTest.java
@@ -28,8 +28,8 @@ import javax.faces.render.RenderKitFactory;
 import javax.faces.render.ResponseStateManager;
 
 import org.apache.myfaces.renderkit.html.HtmlResponseStateManager;
-import org.apache.myfaces.shared_impl.util.StateUtils;
-import org.apache.myfaces.shared_impl.util.serial.DefaultSerialFactory;
+import org.apache.myfaces.shared.util.StateUtils;
+import org.apache.myfaces.shared.util.serial.DefaultSerialFactory;
 import org.apache.myfaces.test.base.junit4.AbstractJsfConfigurableMultipleRequestsTestCase;
 import org.apache.myfaces.test.mock.MockRenderKit;
 import org.apache.myfaces.test.mock.MockResponseWriter;
diff --git a/impl/src/test/java/org/apache/myfaces/application/jsp/JspStateManagerImplTest.java b/impl/src/test/java/org/apache/myfaces/application/jsp/JspStateManagerImplTest.java
index deb6654..3e24bf4 100644
--- a/impl/src/test/java/org/apache/myfaces/application/jsp/JspStateManagerImplTest.java
+++ b/impl/src/test/java/org/apache/myfaces/application/jsp/JspStateManagerImplTest.java
@@ -16,7 +16,7 @@
 
 package org.apache.myfaces.application.jsp;
 
-//import org.apache.myfaces.shared_impl.config.MyfacesConfig;
+//import org.apache.myfaces.shared.config.MyfacesConfig;
 
 import java.io.BufferedWriter;
 import java.io.CharArrayWriter;
diff --git a/impl/src/test/java/org/apache/myfaces/application/jsp/JspViewHandlerImplTest.java b/impl/src/test/java/org/apache/myfaces/application/jsp/JspViewHandlerImplTest.java
index f5615c2..d6e44d7 100644
--- a/impl/src/test/java/org/apache/myfaces/application/jsp/JspViewHandlerImplTest.java
+++ b/impl/src/test/java/org/apache/myfaces/application/jsp/JspViewHandlerImplTest.java
@@ -21,8 +21,8 @@ package org.apache.myfaces.application.jsp;
 import static org.apache.myfaces.Assert.assertException;
 import org.apache.myfaces.FacesTestCase;
 import org.apache.myfaces.TestRunner;
-import org.apache.myfaces.shared_impl.application.InvalidViewIdException;
-import org.apache.myfaces.shared_impl.application.ViewHandlerSupport;
+import org.apache.myfaces.shared.application.InvalidViewIdException;
+import org.apache.myfaces.shared.application.ViewHandlerSupport;
 
 import static org.easymock.EasyMock.*;
 import org.easymock.IAnswer;
diff --git a/impl/src/test/java/org/apache/myfaces/context/PartialResponseWriterImplTest.java b/impl/src/test/java/org/apache/myfaces/context/PartialResponseWriterImplTest.java
index 5890e10..fd2d1a9 100644
--- a/impl/src/test/java/org/apache/myfaces/context/PartialResponseWriterImplTest.java
+++ b/impl/src/test/java/org/apache/myfaces/context/PartialResponseWriterImplTest.java
@@ -19,7 +19,7 @@
 
 package org.apache.myfaces.context;
 
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlResponseWriterImpl;
+import org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl;
 import org.apache.myfaces.test.base.AbstractJsfTestCase;
 
 import javax.faces.context.PartialResponseWriter;
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java
index 8f996d4..3c8ce9d 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java
@@ -28,7 +28,7 @@ import javax.faces.component.html.HtmlForm;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
+import org.apache.myfaces.shared.config.MyfacesConfig;
 import org.apache.myfaces.test.base.AbstractJsfTestCase;
 import org.apache.myfaces.test.mock.MockExternalContext;
 import org.apache.myfaces.test.mock.MockHttpServletRequest;
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlEscapeRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlEscapeRendererTest.java
index daa3764..00cab73 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlEscapeRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlEscapeRendererTest.java
@@ -35,7 +35,7 @@ import javax.faces.model.SelectItem;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlResponseWriterImpl;
+import org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl;
 import org.apache.myfaces.test.base.AbstractJsfTestCase;
 import org.apache.myfaces.test.mock.MockRenderKitFactory;
 
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormRendererTest.java
index b79b286..60fd1ed 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormRendererTest.java
@@ -27,7 +27,7 @@ import javax.faces.component.html.HtmlForm;
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
+import org.apache.myfaces.shared.renderkit.html.HTML;
 import org.apache.myfaces.test.base.AbstractJsfTestCase;
 import org.apache.myfaces.test.mock.MockRenderKitFactory;
 import org.apache.myfaces.test.mock.MockResponseWriter;
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java
index 3129561..149aa8f 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java
@@ -31,7 +31,7 @@ import junit.framework.Test;
 import junit.framework.TestSuite;
 
 import org.apache.myfaces.application.NavigationHandlerImpl;
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
+import org.apache.myfaces.shared.config.MyfacesConfig;
 import org.apache.myfaces.test.base.AbstractJsfTestCase;
 import org.apache.myfaces.test.mock.MockExternalContext;
 import org.apache.myfaces.test.mock.MockHttpServletRequest;
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java
index bbc94c5..524523c 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java
@@ -29,8 +29,8 @@ import junit.framework.Test;
 import junit.framework.TestSuite;
 
 import org.apache.myfaces.application.NavigationHandlerImpl;
-import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
+import org.apache.myfaces.shared.renderkit.JSFAttr;
+import org.apache.myfaces.shared.renderkit.html.HTML;
 import org.apache.myfaces.test.base.AbstractJsfTestCase;
 import org.apache.myfaces.test.mock.MockRenderKitFactory;
 import org.apache.myfaces.test.mock.MockResponseWriter;
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/AbstractClientBehaviorTestCase.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/AbstractClientBehaviorTestCase.java
index e28196e..c456b1f 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/AbstractClientBehaviorTestCase.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/AbstractClientBehaviorTestCase.java
@@ -23,8 +23,8 @@ import javax.faces.component.behavior.AjaxBehavior;
 import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.context.ResponseWriter;
 
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlResponseWriterImpl;
-import org.apache.myfaces.shared_impl.util.FastWriter;
+import org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl;
+import org.apache.myfaces.shared.util.FastWriter;
 import org.apache.myfaces.test.base.junit4.AbstractJsfTestCase;
 import org.apache.myfaces.test.config.ConfigParser;
 import org.junit.Assert;
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlBodyClientBehaviorRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlBodyClientBehaviorRendererTest.java
index 45fd75f..26fb1b9 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlBodyClientBehaviorRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlBodyClientBehaviorRendererTest.java
@@ -23,8 +23,8 @@ import javax.faces.component.behavior.AjaxBehavior;
 import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.component.html.HtmlBody;
 
-import org.apache.myfaces.shared_impl.renderkit.ClientBehaviorEvents;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
+import org.apache.myfaces.shared.renderkit.ClientBehaviorEvents;
+import org.apache.myfaces.shared.renderkit.html.HTML;
 import org.apache.myfaces.test.utils.HtmlCheckAttributesUtil;
 import org.junit.Assert;
 
@@ -41,7 +41,7 @@ public class HtmlBodyClientBehaviorRendererTest extends AbstractClientBehaviorTe
     {
         super.setUp();
         attrs = (HtmlRenderedClientEventAttr[]) 
-            org.apache.myfaces.shared_impl.util.ArrayUtils.concat( 
+            org.apache.myfaces.shared.util.ArrayUtils.concat( 
                     HtmlClientEventAttributesUtil.generateClientBehaviorEventAttrs(),
                 new HtmlRenderedClientEventAttr[]{
                     new HtmlRenderedClientEventAttr(HTML.ONLOAD_ATTR, ClientBehaviorEvents.LOAD),
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlClientEventAttributesUtil.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlClientEventAttributesUtil.java
index 38f77a9..fe30047 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlClientEventAttributesUtil.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlClientEventAttributesUtil.java
@@ -18,8 +18,8 @@
  */
 package org.apache.myfaces.renderkit.html.behavior;
 
-import org.apache.myfaces.shared_impl.renderkit.ClientBehaviorEvents;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
+import org.apache.myfaces.shared.renderkit.ClientBehaviorEvents;
+import org.apache.myfaces.shared.renderkit.html.HTML;
 
 /**
  * @author Leonardo Uribe (latest modification by $Author: jankeesvanandel $)
@@ -48,7 +48,7 @@ public class HtmlClientEventAttributesUtil
     public static HtmlRenderedClientEventAttr[] generateClientBehaviorInputEventAttrs()
     {
         return (HtmlRenderedClientEventAttr[]) 
-            org.apache.myfaces.shared_impl.util.ArrayUtils.concat( 
+            org.apache.myfaces.shared.util.ArrayUtils.concat( 
                 generateClientBehaviorEventAttrs(),
                 new HtmlRenderedClientEventAttr[]{
                     new HtmlRenderedClientEventAttr(HTML.ONBLUR_ATTR, ClientBehaviorEvents.BLUR),
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlCommandButtonClientBehaviorRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlCommandButtonClientBehaviorRendererTest.java
index 7d95c5a..acc190b 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlCommandButtonClientBehaviorRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlCommandButtonClientBehaviorRendererTest.java
@@ -23,9 +23,9 @@ import javax.faces.component.html.HtmlCommandButton;
 import javax.faces.component.html.HtmlOutcomeTargetButton;
 
 import org.apache.myfaces.application.NavigationHandlerImpl;
-import org.apache.myfaces.shared_impl.renderkit.ClientBehaviorEvents;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.util.ArrayUtils;
+import org.apache.myfaces.shared.renderkit.ClientBehaviorEvents;
+import org.apache.myfaces.shared.renderkit.html.HTML;
+import org.apache.myfaces.shared.util.ArrayUtils;
 
 /**
  * @author Leonardo Uribe (latest modification by $Author: jankeesvanandel $)
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlCommandLinkClientBehaviorRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlCommandLinkClientBehaviorRendererTest.java
index e9fb088..d8f4902 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlCommandLinkClientBehaviorRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlCommandLinkClientBehaviorRendererTest.java
@@ -23,9 +23,9 @@ import javax.faces.component.html.HtmlCommandLink;
 import javax.faces.component.html.HtmlForm;
 
 import org.apache.myfaces.application.NavigationHandlerImpl;
-import org.apache.myfaces.shared_impl.renderkit.ClientBehaviorEvents;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.util.ArrayUtils;
+import org.apache.myfaces.shared.renderkit.ClientBehaviorEvents;
+import org.apache.myfaces.shared.renderkit.html.HTML;
+import org.apache.myfaces.shared.util.ArrayUtils;
 
 /**
  * @author Leonardo Uribe (latest modification by $Author: jankeesvanandel $)
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetButtonClientBehaviorRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetButtonClientBehaviorRendererTest.java
index da0c970..9c51bcf 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetButtonClientBehaviorRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetButtonClientBehaviorRendererTest.java
@@ -22,9 +22,9 @@ import javax.faces.component.UIComponent;
 import javax.faces.component.html.HtmlOutcomeTargetButton;
 
 import org.apache.myfaces.application.NavigationHandlerImpl;
-import org.apache.myfaces.shared_impl.renderkit.ClientBehaviorEvents;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.util.ArrayUtils;
+import org.apache.myfaces.shared.renderkit.ClientBehaviorEvents;
+import org.apache.myfaces.shared.renderkit.html.HTML;
+import org.apache.myfaces.shared.util.ArrayUtils;
 
 /**
  * @author Leonardo Uribe (latest modification by $Author: jankeesvanandel $)
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetLinkClientBehaviorRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetLinkClientBehaviorRendererTest.java
index e614fa6..1f1e288 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetLinkClientBehaviorRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutcomeTargetLinkClientBehaviorRendererTest.java
@@ -23,9 +23,9 @@ import javax.faces.component.html.HtmlOutcomeTargetLink;
 import javax.faces.component.html.HtmlOutputLink;
 
 import org.apache.myfaces.application.NavigationHandlerImpl;
-import org.apache.myfaces.shared_impl.renderkit.ClientBehaviorEvents;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.util.ArrayUtils;
+import org.apache.myfaces.shared.renderkit.ClientBehaviorEvents;
+import org.apache.myfaces.shared.renderkit.html.HTML;
+import org.apache.myfaces.shared.util.ArrayUtils;
 
 /**
  * @author Leonardo Uribe (latest modification by $Author: jankeesvanandel $)
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutputLabelClientBehaviorRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutputLabelClientBehaviorRendererTest.java
index 9c95d81..dee1b9b 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutputLabelClientBehaviorRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutputLabelClientBehaviorRendererTest.java
@@ -22,9 +22,9 @@ import javax.faces.component.UIComponent;
 import javax.faces.component.html.HtmlOutputLabel;
 import javax.faces.component.html.HtmlPanelGrid;
 
-import org.apache.myfaces.shared_impl.renderkit.ClientBehaviorEvents;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.util.ArrayUtils;
+import org.apache.myfaces.shared.renderkit.ClientBehaviorEvents;
+import org.apache.myfaces.shared.renderkit.html.HTML;
+import org.apache.myfaces.shared.util.ArrayUtils;
 
 /**
  * @author Leonardo Uribe (latest modification by $Author: jankeesvanandel $)
diff --git a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutputLinkClientBehaviorRendererTest.java b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutputLinkClientBehaviorRendererTest.java
index 4cea62e..fb3178f 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutputLinkClientBehaviorRendererTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkit/html/behavior/HtmlOutputLinkClientBehaviorRendererTest.java
@@ -21,9 +21,9 @@ package org.apache.myfaces.renderkit.html.behavior;
 import javax.faces.component.UIComponent;
 import javax.faces.component.html.HtmlOutputLink;
 
-import org.apache.myfaces.shared_impl.renderkit.ClientBehaviorEvents;
-import org.apache.myfaces.shared_impl.renderkit.html.HTML;
-import org.apache.myfaces.shared_impl.util.ArrayUtils;
+import org.apache.myfaces.shared.renderkit.ClientBehaviorEvents;
+import org.apache.myfaces.shared.renderkit.html.HTML;
+import org.apache.myfaces.shared.util.ArrayUtils;
 
 /**
  * @author Leonardo Uribe (latest modification by $Author: jankeesvanandel $)
diff --git a/impl/src/test/java/org/apache/myfaces/renderkits/OwnRenderkitTest.java b/impl/src/test/java/org/apache/myfaces/renderkits/OwnRenderkitTest.java
index ba36d24..d2591f1 100644
--- a/impl/src/test/java/org/apache/myfaces/renderkits/OwnRenderkitTest.java
+++ b/impl/src/test/java/org/apache/myfaces/renderkits/OwnRenderkitTest.java
@@ -26,7 +26,7 @@ import javax.faces.render.RenderKit;
 import javax.faces.render.RenderKitFactory;
 
 import org.apache.myfaces.renderkit.html.HtmlTextRenderer;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.test.base.AbstractJsfTestCase;
 import org.apache.myfaces.test.mock.MockFacesContext12;
 import org.apache.myfaces.test.mock.MockResponseWriter;
diff --git a/impl/src/test/java/org/apache/myfaces/test/AbstractClassElementTestCase.java b/impl/src/test/java/org/apache/myfaces/test/AbstractClassElementTestCase.java
index c65ec09..05e8298 100644
--- a/impl/src/test/java/org/apache/myfaces/test/AbstractClassElementTestCase.java
+++ b/impl/src/test/java/org/apache/myfaces/test/AbstractClassElementTestCase.java
@@ -26,7 +26,7 @@ import javax.xml.parsers.SAXParserFactory;
 
 import junit.framework.TestCase;
 
-import org.apache.myfaces.shared_impl.test.ClassElementHandler;
+import org.apache.myfaces.shared.test.ClassElementHandler;
 
 /**
  * This test makes sure all of our components, tags, renderers, validators, converters, action listeners, phase
diff --git a/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletMultipleRequestsTestCase.java b/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletMultipleRequestsTestCase.java
index 4cbd140..ea8e7b0 100644
--- a/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletMultipleRequestsTestCase.java
+++ b/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletMultipleRequestsTestCase.java
@@ -48,8 +48,8 @@ import org.apache.myfaces.config.element.Renderer;
 import org.apache.myfaces.config.impl.digester.DigesterFacesConfigDispenserImpl;
 import org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl;
 import org.apache.myfaces.context.PartialViewContextFactoryImpl;
-import org.apache.myfaces.shared_impl.application.ViewHandlerSupport;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.application.ViewHandlerSupport;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.test.base.junit4.AbstractJsfConfigurableMultipleRequestsTestCase;
 import org.apache.myfaces.test.el.MockExpressionFactory;
 import org.apache.myfaces.test.mock.MockExternalContext;
diff --git a/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletTestCase.java b/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletTestCase.java
index 4ade5e8..6660bba 100644
--- a/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletTestCase.java
+++ b/impl/src/test/java/org/apache/myfaces/view/facelets/FaceletTestCase.java
@@ -48,8 +48,8 @@ import org.apache.myfaces.config.element.Renderer;
 import org.apache.myfaces.config.impl.digester.DigesterFacesConfigDispenserImpl;
 import org.apache.myfaces.config.impl.digester.DigesterFacesConfigUnmarshallerImpl;
 import org.apache.myfaces.context.PartialViewContextFactoryImpl;
-import org.apache.myfaces.shared_impl.application.ViewHandlerSupport;
-import org.apache.myfaces.shared_impl.util.ClassUtils;
+import org.apache.myfaces.shared.application.ViewHandlerSupport;
+import org.apache.myfaces.shared.util.ClassUtils;
 import org.apache.myfaces.test.base.junit4.AbstractJsfConfigurableMockTestCase;
 import org.apache.myfaces.test.el.MockExpressionFactory;
 import org.apache.myfaces.test.mock.MockPropertyResolver;
diff --git a/impl/src/test/java/org/apache/myfaces/view/facelets/StateManagerWithFaceletsClientSideTest.java b/impl/src/test/java/org/apache/myfaces/view/facelets/StateManagerWithFaceletsClientSideTest.java
index cfb99ba..88453ef 100644
--- a/impl/src/test/java/org/apache/myfaces/view/facelets/StateManagerWithFaceletsClientSideTest.java
+++ b/impl/src/test/java/org/apache/myfaces/view/facelets/StateManagerWithFaceletsClientSideTest.java
@@ -25,8 +25,8 @@ import javax.faces.render.ResponseStateManager;
 
 import org.apache.myfaces.application.StateManagerImpl;
 import org.apache.myfaces.renderkit.html.HtmlResponseStateManager;
-import org.apache.myfaces.shared_impl.util.StateUtils;
-import org.apache.myfaces.shared_impl.util.serial.DefaultSerialFactory;
+import org.apache.myfaces.shared.util.StateUtils;
+import org.apache.myfaces.shared.util.serial.DefaultSerialFactory;
 import org.apache.myfaces.test.mock.MockRenderKit;
 import org.junit.Test;
 import org.testng.Assert;
diff --git a/impl/src/test/java/org/apache/myfaces/view/facelets/StateManagerWithFaceletsTest.java b/impl/src/test/java/org/apache/myfaces/view/facelets/StateManagerWithFaceletsTest.java
index 7dee917..21aac6f 100644
--- a/impl/src/test/java/org/apache/myfaces/view/facelets/StateManagerWithFaceletsTest.java
+++ b/impl/src/test/java/org/apache/myfaces/view/facelets/StateManagerWithFaceletsTest.java
@@ -25,8 +25,8 @@ import javax.faces.render.ResponseStateManager;
 
 import org.apache.myfaces.application.StateManagerImpl;
 import org.apache.myfaces.renderkit.html.HtmlResponseStateManager;
-import org.apache.myfaces.shared_impl.util.StateUtils;
-import org.apache.myfaces.shared_impl.util.serial.DefaultSerialFactory;
+import org.apache.myfaces.shared.util.StateUtils;
+import org.apache.myfaces.shared.util.serial.DefaultSerialFactory;
 import org.apache.myfaces.test.mock.MockRenderKit;
 import org.junit.Test;
 import org.testng.Assert;
diff --git a/impl/src/test/java/org/apache/myfaces/view/facelets/compiler/TagLibraryTestCase.java b/impl/src/test/java/org/apache/myfaces/view/facelets/compiler/TagLibraryTestCase.java
index 5a2db86..6f97daa 100644
--- a/impl/src/test/java/org/apache/myfaces/view/facelets/compiler/TagLibraryTestCase.java
+++ b/impl/src/test/java/org/apache/myfaces/view/facelets/compiler/TagLibraryTestCase.java
@@ -21,7 +21,7 @@ package org.apache.myfaces.view.facelets.compiler;
 import java.io.File;
 import java.net.URL;
 
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
+import org.apache.myfaces.shared.config.MyfacesConfig;
 import org.apache.myfaces.view.facelets.FaceletTestCase;
 import org.apache.myfaces.view.facelets.tag.TagLibrary;
 import org.junit.Assert;
diff --git a/impl/src/test/java/org/apache/myfaces/view/facelets/mock/MockResourceHandlerSupport.java b/impl/src/test/java/org/apache/myfaces/view/facelets/mock/MockResourceHandlerSupport.java
index 0d76831..4b13064 100644
--- a/impl/src/test/java/org/apache/myfaces/view/facelets/mock/MockResourceHandlerSupport.java
+++ b/impl/src/test/java/org/apache/myfaces/view/facelets/mock/MockResourceHandlerSupport.java
@@ -19,8 +19,8 @@
 package org.apache.myfaces.view.facelets.mock;
 
 import org.apache.myfaces.application.DefaultResourceHandlerSupport;
-import org.apache.myfaces.shared_impl.resource.ClassLoaderResourceLoader;
-import org.apache.myfaces.shared_impl.resource.ResourceLoader;
+import org.apache.myfaces.shared.resource.ClassLoaderResourceLoader;
+import org.apache.myfaces.shared.resource.ResourceLoader;
 
 /**
  * Redirect resource request to the directory where the test class is,
diff --git a/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/core/ViewMetadataTestCase.java b/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/core/ViewMetadataTestCase.java
index a96aa4f..c59f502 100644
--- a/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/core/ViewMetadataTestCase.java
+++ b/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jsf/core/ViewMetadataTestCase.java
@@ -34,8 +34,8 @@ import javax.faces.context.ResponseWriter;
 import javax.faces.view.ViewMetadata;
 
 import org.apache.myfaces.application.ViewHandlerImpl;
-import org.apache.myfaces.shared_impl.application.ViewHandlerSupport;
-import org.apache.myfaces.shared_impl.renderkit.html.HtmlResponseWriterImpl;
+import org.apache.myfaces.shared.renderkit.html.HtmlResponseWriterImpl;
+import org.apache.myfaces.shared.application.ViewHandlerSupport;
 import org.apache.myfaces.view.facelets.FaceletTestCase;
 import org.apache.myfaces.view.facelets.bean.HelloWorld;
 import org.junit.Assert;
diff --git a/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jstl/core/CifTestCase.java b/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jstl/core/CifTestCase.java
index 79c687f..606022b 100644
--- a/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jstl/core/CifTestCase.java
+++ b/impl/src/test/java/org/apache/myfaces/view/facelets/tag/jstl/core/CifTestCase.java
@@ -24,7 +24,7 @@ import javax.faces.application.StateManager;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
 
-import org.apache.myfaces.shared_impl.config.MyfacesConfig;
+import org.apache.myfaces.shared.config.MyfacesConfig;
 import org.apache.myfaces.view.facelets.FaceletTestCase;
 import org.apache.myfaces.view.facelets.bean.Employee;
 import org.junit.Assert;

-- 
To stop receiving notification emails like this one, please contact
deki@apache.org.

[myfaces] 04/05: add shared internal module to core project

Posted by de...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

deki pushed a commit to branch refactor_shared_2_1_x
in repository https://gitbox.apache.org/repos/asf/myfaces.git

commit a908b5a84d4f3bc95580a4f9a5384a0abd7822e6
Author: Leonardo Uribe <lu...@apache.org>
AuthorDate: Sat Jul 23 15:55:11 2011 +0000

    add shared internal module to core project
---
 pom.xml | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/pom.xml b/pom.xml
index f43a0b3..ae48342 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,6 +51,7 @@
         <module>api</module>
         <module>shaded-impl</module>
         <module>implee6</module>
+        <module>shared</module>
         <module>impl</module>
         <module>bundle</module>
     </modules>
@@ -248,6 +249,12 @@
                 <artifactId>myfaces-impl</artifactId>
                 <version>${project.version}</version>
             </dependency>
+            
+            <dependency>
+                <groupId>org.apache.myfaces.core.internal</groupId>
+                <artifactId>myfaces-impl-shared</artifactId>
+                <version>${project.version}</version>
+            </dependency>
 
             <!-- myfaces-shared-impl (will be packed together with myfaces-impl) -->
             <dependency>

-- 
To stop receiving notification emails like this one, please contact
deki@apache.org.