myfaces-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From tandrasc...@apache.org
Subject [myfaces] branch master updated: MYFACES-4308 - removed commons dependencies
Date Tue, 05 Nov 2019 09:49:03 GMT
This is an automated email from the ASF dual-hosted git repository.

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


The following commit(s) were added to refs/heads/master by this push:
     new afd40aa  MYFACES-4308 - removed commons dependencies
afd40aa is described below

commit afd40aa3d89f75d2f9a2b1df40e3dfe3eca3e155
Author: Thomas Andraschko <tandraschko@apache.org>
AuthorDate: Tue Nov 5 10:48:56 2019 +0100

    MYFACES-4308 - removed commons dependencies
---
 api/pom.xml                                        |   1 -
 bundle/pom.xml                                     |   2 -
 impl/pom.xml                                       |   8 -
 .../myfaces/application/ApplicationImpl.java       |  39 +-
 .../component/AbstractUIComponentPropertyTest.java |  39 +-
 .../behavior/AbstractClientBehaviorTestCase.java   |   6 +-
 parent/pom.xml                                     |   8 -
 parent/src/site/apt/googleappenginesupport.apt     | 150 -----
 .../myfaces2-googleappengine-eclipse-tutorial.apt  | 202 ------
 .../apt/myfaces2-googleappengine-idea-tutorial.apt | 382 -----------
 parent/src/site/site.xml                           |   1 -
 test/pom.xml                                       |   6 -
 .../apache/myfaces/test/config/ConfigParser.java   | 709 ---------------------
 .../myfaces/test/mock/MockApplication20.java       |  18 +-
 .../mock/lifecycle/DefaultRestoreViewSupport.java  |  24 +-
 .../test/mock/lifecycle/PhaseListenerManager.java  |  11 +-
 .../test/mock/lifecycle/RestoreViewExecutor.java   |  22 +-
 17 files changed, 105 insertions(+), 1523 deletions(-)

diff --git a/api/pom.xml b/api/pom.xml
index 98bc320..242820a 100644
--- a/api/pom.xml
+++ b/api/pom.xml
@@ -348,7 +348,6 @@
                                     javax.servlet.jsp.jstl.core;version="[1.1.2, 2.0.0)",
                                     javax.servlet.jsp.jstl.sql;version="[1.1.2, 2.0.0)",
                                     javax.servlet.jsp.tagext;version="[2.1.0, 3.2)",
-                                    org.apache.commons.logging;version="[1.1.1, 2.0.0)",
                                     javax.faces.*;version="${project.version}"
                                 </Import-Package>
                                 <Require-Bundle>
diff --git a/bundle/pom.xml b/bundle/pom.xml
index 3e13584..a8d83c1 100644
--- a/bundle/pom.xml
+++ b/bundle/pom.xml
@@ -84,8 +84,6 @@
                             javax.validation.*;version="[1.0.0, 2.0.0)";resolution:=optional,
                             javax.xml.parsers,
                             org.apache;resolution:=optional,
-                            org.apache.commons.beanutils;version="[1.8.3, 2.0.0)",
-                            org.apache.commons.logging;version="[1.1.1, 2.0.0)",
                             org.w3c.dom,
                             org.xml.sax,
                             org.xml.sax.helpers,
diff --git a/impl/pom.xml b/impl/pom.xml
index 402227a..7d30a86 100644
--- a/impl/pom.xml
+++ b/impl/pom.xml
@@ -693,8 +693,6 @@
                                     javax.servlet.annotation;version="[3, 5)";resolution:=optional,
                                     javax.xml.parsers,
                                     org.apache;resolution:=optional,
-                                    org.apache.commons.beanutils;version="[1.8.3, 2.0.0)",
-                                    org.apache.commons.logging;version="[1.1.1, 2.0.0)",
                                     org.w3c.dom,
                                     org.xml.sax,
                                     org.xml.sax.helpers,
@@ -1055,12 +1053,6 @@
             <artifactId>myfaces-builder-annotations</artifactId>
         </dependency>
 
-        <!-- Commons -->
-        <dependency>
-            <groupId>commons-beanutils</groupId>
-            <artifactId>commons-beanutils</artifactId>
-        </dependency>
-
         <!-- tomcat 7 support (InjectionProvider) -->
         <dependency>
             <groupId>org.apache.tomcat</groupId>
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 e1d2955..64cd411 100755
--- a/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
+++ b/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
@@ -20,6 +20,9 @@ package org.apache.myfaces.application;
 
 import java.beans.BeanDescriptor;
 import java.beans.BeanInfo;
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
 import java.lang.reflect.Constructor;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -31,6 +34,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.MissingResourceException;
+import java.util.Objects;
 import java.util.TimeZone;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -90,7 +94,6 @@ import javax.naming.Context;
 import javax.naming.InitialContext;
 import javax.naming.NamingException;
 
-import org.apache.commons.beanutils.BeanUtils;
 import org.apache.myfaces.cdi.wrapper.FacesBehaviorCDIWrapper;
 import org.apache.myfaces.cdi.wrapper.FacesClientBehaviorCDIWrapper;
 import org.apache.myfaces.cdi.wrapper.FacesConverterCDIWrapper;
@@ -1653,6 +1656,9 @@ public class ApplicationImpl extends Application
 
     }
 
+    private Map<Class<?>, Map<String, PropertyDescriptor>> converterPDCache
+            = new ConcurrentHashMap<>();
+            
     private void setConverterProperties(final Class<?> converterClass, final Converter converter)
     {
         final org.apache.myfaces.config.element.Converter converterConfig = _runtimeConfig
@@ -1666,13 +1672,40 @@ public class ApplicationImpl extends Application
 
         if (converterConfig != null && !converterConfig.getProperties().isEmpty())
         {
+            Map<String, PropertyDescriptor> pds = converterPDCache.computeIfAbsent(converterClass, c ->
+            {
+                HashMap<String, PropertyDescriptor> map = new HashMap<>(converterConfig.getProperties().size());
+                try
+                {
+                    for (PropertyDescriptor pd : Introspector.getBeanInfo(c).getPropertyDescriptors())
+                    {
+                        for (Property property : converterConfig.getProperties())
+                        {
+                            if (Objects.equals(pd.getName(), property.getPropertyName()))
+                            {
+                                map.put(property.getPropertyName(), pd);
+                            }
+                        }
+                    }
+                }
+                catch (IntrospectionException e)
+                {
+                    log.log(Level.SEVERE,
+                            "Could not read properties for setting default values of converter: "
+                                    + converterClass.getSimpleName(),
+                            e);
+                }
+                return map;
+            });
+
             for (int i = 0; i < converterConfig.getProperties().size(); i++)
             {
                 Property property = converterConfig.getProperties().get(i);
-                
                 try
                 {
-                    BeanUtils.setProperty(converter, property.getPropertyName(), property.getDefaultValue());
+                    PropertyDescriptor pd = pds.get(property.getPropertyName());
+                    Object convertedValue = ClassUtils.convertToType(property.getDefaultValue(), pd.getPropertyType());
+                    pd.getWriteMethod().invoke(converter, convertedValue);
                 }
                 catch (Throwable th)
                 {
diff --git a/impl/src/test/java/javax/faces/component/AbstractUIComponentPropertyTest.java b/impl/src/test/java/javax/faces/component/AbstractUIComponentPropertyTest.java
index 1983478..b348ea0 100644
--- a/impl/src/test/java/javax/faces/component/AbstractUIComponentPropertyTest.java
+++ b/impl/src/test/java/javax/faces/component/AbstractUIComponentPropertyTest.java
@@ -18,15 +18,16 @@
  */
 package javax.faces.component;
 
+import java.beans.IntrospectionException;
+import java.beans.Introspector;
+import java.beans.PropertyDescriptor;
 import static org.easymock.EasyMock.eq;
 import static org.easymock.EasyMock.expect;
 
 import javax.el.ELContext;
 import javax.el.ValueExpression;
 
-import org.apache.commons.beanutils.PropertyUtils;
 import org.apache.myfaces.test.mock.MockFacesContext;
-import org.apache.myfaces.test.mock.MockFacesContext12;
 import org.easymock.classextension.EasyMock;
 import org.easymock.classextension.IMocksControl;
 import org.junit.After;
@@ -81,10 +82,24 @@ public abstract class AbstractUIComponentPropertyTest<T>
 
     protected abstract UIComponent createComponent();
 
+    protected PropertyDescriptor getPropertyDescriptor(Class<?> clazz, String property) throws IntrospectionException
+    {
+        for (PropertyDescriptor pd : Introspector.getBeanInfo(clazz).getPropertyDescriptors())
+        {
+            if (pd.getName().equals(property))
+            {
+                return pd;
+            }
+        }
+        return null;
+    }
+    
     @Test
     public void testDefaultValue() throws Exception
     {
-        Assert.assertEquals(_defaultValue, PropertyUtils.getProperty(_component, _property));
+        Object val = getPropertyDescriptor(_component.getClass(), _property).getReadMethod()
+                .invoke(_component);
+        Assert.assertEquals(_defaultValue, val);
     }
 
     @Test
@@ -92,8 +107,12 @@ public abstract class AbstractUIComponentPropertyTest<T>
     {
         for (T testValue : _testValues)
         {
-            PropertyUtils.setProperty(_component, _property, testValue);
-            Assert.assertEquals(testValue, PropertyUtils.getProperty(_component, _property));
+            getPropertyDescriptor(_component.getClass(), _property).getWriteMethod()
+                    .invoke(_component, testValue);
+            
+            Object val = getPropertyDescriptor(_component.getClass(), _property).getReadMethod()
+                    .invoke(_component);
+            Assert.assertEquals(testValue, val);
         }
     }
 
@@ -106,7 +125,10 @@ public abstract class AbstractUIComponentPropertyTest<T>
             expect(_valueExpression.getValue(eq(_facesContext.getELContext()))).andReturn(testValue);
             _mocksControl.replay();
             _component.setValueExpression(_property, _valueExpression);
-            Assert.assertEquals(testValue, PropertyUtils.getProperty(_component, _property));
+            
+            Object val = getPropertyDescriptor(_component.getClass(), _property).getReadMethod()
+                    .invoke(_component);
+            Assert.assertEquals(testValue, val);
             _mocksControl.reset();
         }
     }
@@ -122,7 +144,10 @@ public abstract class AbstractUIComponentPropertyTest<T>
             _mocksControl.reset();
             expect(_valueExpression.getValue(eq(_facesContext.getELContext()))).andReturn(testValue);
             _mocksControl.replay();
-            Assert.assertEquals(testValue, PropertyUtils.getProperty(_component, _property));
+            
+            Object val = getPropertyDescriptor(_component.getClass(), _property).getReadMethod()
+                    .invoke(_component);
+            Assert.assertEquals(testValue, val);
             _mocksControl.reset();
         }
     }
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 bc56e5c..e2b51f2 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
@@ -22,13 +22,11 @@ import javax.faces.FactoryFinder;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
 import javax.faces.component.behavior.AjaxBehavior;
-import javax.faces.component.behavior.ClientBehaviorContext;
 import javax.faces.component.behavior.ClientBehaviorHolder;
 import javax.faces.context.ResponseWriter;
 
 import org.apache.myfaces.renderkit.html.HtmlResponseWriterImpl;
 import org.apache.myfaces.util.lang.FastWriter;
-import org.apache.myfaces.test.config.ConfigParser;
 import org.apache.myfaces.view.facelets.FaceletTestCase;
 import org.junit.Assert;
 import org.junit.Test;
@@ -41,7 +39,6 @@ public abstract class AbstractClientBehaviorTestCase extends FaceletTestCase
 {
     protected ResponseWriter writer;
     protected FastWriter outputWriter; 
-    protected ConfigParser parser;
 
     protected abstract HtmlRenderedClientEventAttr[] getClientBehaviorHtmlRenderedAttributes();
     
@@ -82,8 +79,7 @@ public abstract class AbstractClientBehaviorTestCase extends FaceletTestCase
     protected void setUpRenderKit() throws Exception
     {
         super.setUpRenderKit();
-        parser = new ConfigParser();
-        parser.parse(parser.getPlatformURLs());
+
         //parser.parse(this.getClass().getResource("/META-INF/faces-config.xml"));    
         request.setServletPath("/test");
     }
diff --git a/parent/pom.xml b/parent/pom.xml
index d027da1..4deac99 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -416,14 +416,6 @@
                 <scope>provided</scope>
             </dependency>
 
-            <dependency>
-                <groupId>commons-beanutils</groupId>
-                <artifactId>commons-beanutils</artifactId>
-                <version>1.9.4</version>
-                <scope>compile</scope>
-            </dependency>
-
-
             <!-- tomcat 7 support (InjectionProvider) -->
             <dependency>
                 <groupId>org.apache.tomcat</groupId>
diff --git a/parent/src/site/apt/googleappenginesupport.apt b/parent/src/site/apt/googleappenginesupport.apt
deleted file mode 100644
index 538eb48..0000000
--- a/parent/src/site/apt/googleappenginesupport.apt
+++ /dev/null
@@ -1,150 +0,0 @@
- ------
- Myfaces Core 2.0 on Google App Engine
- ------
- Ali Ok
- ------
- 2010-04-08
- ------- 
- 
-~~ Licensed to the Apache Software Foundation (ASF) under one
-~~ or more contributor license agreements.  See the NOTICE file
-~~ distributed with this work for additional information
-~~ regarding copyright ownership.  The ASF licenses this file
-~~ to you under the Apache License, Version 2.0 (the
-~~ "License"); you may not use this file except in compliance
-~~ with the License.  You may obtain a copy of the License at
-~~
-~~   http://www.apache.org/licenses/LICENSE-2.0
-~~
-~~ Unless required by applicable law or agreed to in writing,
-~~ software distributed under the License is distributed on an
-~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-~~ KIND, either express or implied.  See the License for the
-~~ specific language governing permissions and limitations
-~~ under the License.
-
-~~ NOTE: For help with the syntax of this file, see:
-~~ http://maven.apache.org/doxia/references/apt-format.html
-
-Myfaces Core 2.0 on Google App Engine
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  In order to run Myfaces on Google App Engine, you need to complete the steps below. Configuration explained in this document is tested with
-  Google App Engine 1.3.0.
-  
-  You can also find tutorials for {{{http://myfaces.apache.org/core20/myfaces2-googleappengine-eclipse-tutorial.html}Eclipse}} and {{{http://myfaces.apache.org/core20/myfaces2-googleappengine-idea-tutorial.html}IntelliJ IDEA}}.  
-
-   * Download a Myfaces Core <<<2.0.0-beta-3>>> or a version released <<later>> than <<<2.0.0-beta-3>>>. Google App Engine support is not available for older versions.
-     Extract and put following files into war/WEB-INF/lib:
-       
-       * myfaces-api-2.0.x.jar
-       
-       * myfaces-impl-2.0.x.jar
-       
-       * commons-beanutils-1.x.x.jar
-       
-       * commons-collections-3.x.jar
-       
-       * commons-digester-x.x.jar
-       
-       * commons-discovery-0.x.jar
-       
-       * commons-logging-1.x.x.jar
-        
-
-   * Add following lines into your web.xml.
-
-+------------------------------------------------------------------------+
-      <web-app>
-        ...
-        
-        <!--
-            Need to set a secret to avoid javax.crypto.BadPaddingException.
-            "param-value" must be Base64 encoded.
-            More details: http://wiki.apache.org/myfaces/Secure_Your_Application
-         -->
-        <context-param>
-            <param-name>org.apache.myfaces.SECRET</param-name>
-            <param-value>NzY1NDMyMTA=</param-value>
-        </context-param>
-        
-        <!--
-           Facelets configuration fragment
-        -->
-        <context-param>
-          <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
-          <param-value>.xhtml</param-value>
-        </context-param>
-        
-        <servlet>
-          <servlet-name>Faces Servlet</servlet-name>
-          <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
-        </servlet>
-        
-        <servlet-mapping>
-          <servlet-name>Faces Servlet</servlet-name>
-          <url-pattern>*.jsf</url-pattern>
-        </servlet-mapping>
-        ...      
-      </web-app>
-+------------------------------------------------------------------------+
-
-   * Enable sessions on App Engine. To do this, add line below to war/WEB-INF/appengine-web.xml.
-   
-+------------------------------------------------------------------------+
-      <sessions-enabled>true</sessions-enabled>
-+------------------------------------------------------------------------+
-
-   
-   * Although Google App Engine is said to support JSP 2.1, JSP implementation version(2.0) 
-     does not match JSP API version(2.1). So, we need to supply Unified Expression Language 
-     implementation jars. You can find them {{{https://uel.dev.java.net/}here}}.
-     Put el-api-1.x.jar and el-impl-1.x.jar into war/WEB-INF/lib.  
-
-   * If you have a faces-config.xml, please check that you use the header for JSF2:
-
-+------------------------------------------------------------------------+
-	<?xml version="1.0" encoding="UTF-8"?>
-	<faces-config
-	    xmlns="http://java.sun.com/xml/ns/javaee"
-	    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
-	    version="2.0">
-	    ...
-	</faces-config>
-+------------------------------------------------------------------------+
-
-
-   * Here is the <<sample>> directory structure:
-   
-+------------------------------------------------------------------------+
-   +<Your Google App Engine Project Folder>
-     + src
-       + META-INF
-         - jdoconfig.xml
-     + war
-       - somepage.xhtml
-       + WEB-INF
-         - appengine-web.xml
-         - faces-config.xml
-         - logging.properties
-         - web.xml
-         + lib
-           - appengine-api-1.0-sdk-1.3.0.jar
-           - appengine-api-labs-1.3.0.jar
-           - commons-beanutils-1.7.0.jar
-           - commons-collections-3.2.jar
-           - commons-digester-1.8.jar
-           - commons-discovery-0.4.jar
-           - commons-logging-1.1.1.jar
-           - datanucleus-appengine-1.0.4.1.final.jar
-           - datanucleus-core-1.1.5.jar
-           - datanucleus-jpa-1.1.5.jar
-           - el-api-1.1.jar
-           - el-impl-1.1.jar
-           - geronimo-jpa_3.0_spec-1.1.1.jar
-           - geronimo-jta_1.1_spec-1.1.1.jar
-           - jdo2-api-2.3-eb.jar
-           - myfaces-api-2.0.0-beta-3.jar 
-           - myfaces-impl-2.0.0-beta-3.jar 
-+------------------------------------------------------------------------+
diff --git a/parent/src/site/apt/myfaces2-googleappengine-eclipse-tutorial.apt b/parent/src/site/apt/myfaces2-googleappengine-eclipse-tutorial.apt
deleted file mode 100644
index 6c6f904..0000000
--- a/parent/src/site/apt/myfaces2-googleappengine-eclipse-tutorial.apt
+++ /dev/null
@@ -1,202 +0,0 @@
- ------
- Tutorial : Configuring MyFaces 2 to run on Google App Engine with Eclipse
- ------
- Ali Ok
- ------
- 2010-04-08
- -------
- 
-~~ Licensed to the Apache Software Foundation (ASF) under one
-~~ or more contributor license agreements.  See the NOTICE file
-~~ distributed with this work for additional information
-~~ regarding copyright ownership.  The ASF licenses this file
-~~ to you under the Apache License, Version 2.0 (the
-~~ "License"); you may not use this file except in compliance
-~~ with the License.  You may obtain a copy of the License at
-~~
-~~   http://www.apache.org/licenses/LICENSE-2.0
-~~
-~~ Unless required by applicable law or agreed to in writing,
-~~ software distributed under the License is distributed on an
-~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-~~ KIND, either express or implied.  See the License for the
-~~ specific language governing permissions and limitations
-~~ under the License.
-
-~~ NOTE: For help with the syntax of this file, see:
-~~ http://maven.apache.org/doxia/references/apt-format.html
- 
-
-Tutorial : Configuring MyFaces 2 to run on Google App Engine with Eclipse
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  Google App Engine support for MyFaces 2 made trunk and it is released with MyFaces Core 2.0.0-beta-3. 
-  In this tutorial, I will explain how to use it. I assume that you have basic Eclipse, JSF and Facelets knowledge.
-
-  You can find IDE-independent instructions {{{./googleappenginesupport.html}here}}. Additionally, there is a tutorial for IntelliJ IDEA {{{./myfaces2-googleappengine-idea-tutorial.html}here}}.
-
-  {{{http://sites.google.com/a/aliok.com.tr/upload/uploads/tutorial-gae-myfaces2.zip?attredirects=0&d=1}Here}} 
-  is the complete source code and the Eclipse project of the example application (which I took from 
-  {{{https://facelets.dev.java.net/nonav/docs/dev/docbook.html}Facelets Tutorial}}) that I configured to run on 
-  Google App Engine. 
-  
-  I deployed the application explained in this tutorial to: 
-  {{{http://myfaces2-tutorial.latest.aliok-com-tr-test.appspot.com/guess.jsf}http://myfaces2-tutorial.latest.aliok-com-tr-test.appspot.com/guess.jsf}} 
-
-  In order to run Myfaces on Google App Engine, you need to complete the steps below. Configuration explained in this document is tested with
-  Google App Engine 1.3.2.
-
-*Table of Content
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
-%{toc|section=2|fromDepth=1|toDepth=1}
-
-
-
-*{Setting up the environment}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  
-  [[1]]  Download Eclipse {{{http://www.eclipse.org/downloads/}here}}, preferably IDE for JEE Developers.
-  
-  [[2]]  Install Google Eclipse Plugin with {{{http://code.google.com/eclipse/docs/download.html}this}} guide.
-
-
-
-
-*{Creating the Project and Placing the Jars}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  
-  [[1]] Create a Web Application Project (uncheck "Use Google Web Toolkit" if you won't use GWT)
-  
-[images/gaetutorial-eclipse/01.jpg] Creating the Project
-  
-[images/gaetutorial-eclipse/02.jpg] Creating the Project
-  
-  [[2]] Download Myfaces Core {{{http://myfaces.apache.org/download.html}here}}. We need "MyFaces Core 2.0.0-beta-3" or a 
-        later version. Extract files below and put them into war/WEB-INF/lib.
-    
-      * lib/myfaces-api-2.x.x.jar
-      
-      * lib/myfaces-impl-2.x.x.jar
-      
-      * lib/commons-logging-1.x.x.jar
-      
-      * lib/commons-beanutils-1.x.x.jar
-      
-      * lib/commons-collections-3.x.jar
-      
-      * lib/commons-digester-x.x.jar (I tested with version 1.8)
-      
-      * lib/commons-discovery-0.x.jar
-
-      Here is the war/WEB-INF/lib so far:
-      
-[images/gaetutorial-eclipse/03.jpg] war/WEB-INF/lib
-         
-      Please note that some jars (i.e. jdo2-api-2.3-eb.jar) are put by Google App Engine Eclipse plugin when the project is created.
-        
-
-  [[3]]  Download {{{http://download.java.net/maven/glassfish/javax/el/el-api/1.1/el-api-1.1.jar}el-api}}  
-         and {{{http://download.java.net/maven/glassfish/org/glassfish/web/el-impl/1.1/el-impl-1.1.jar}el-impl}} 
-         and put them into war/WEB-INF/lib. You can see the war/WEB-INF/lib so far below.
-
-[images/gaetutorial-eclipse/04.jpg] war/WEB-INF/lib
-
-  [[4]]  Add lines below into war/WEB-INF/web.xml.
-
-+------------------------------------------------------------------------+
-     <web-app ...
-             ...
-            <!--
-                Need to set a secret to avoid javax.crypto.BadPaddingException.
-                "param-value" must be Base64 encoded.
-                More details: http://wiki.apache.org/myfaces/Secure_Your_Application
-             -->
-            <context-param>
-                <param-name>org.apache.myfaces.SECRET</param-name>
-                <param-value>NzY1NDMyMTA=</param-value>
-                </context-param>       
-
-            <!--
-               Facelets configuration fragment
-            -->
-            <context-param>
-              <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
-              <param-value>.xhtml</param-value>
-            </context-param>
-           
-            <servlet>
-              <servlet-name>Faces Servlet</servlet-name>
-              <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
-            </servlet>
-           
-            <servlet-mapping>
-              <servlet-name>Faces Servlet</servlet-name>
-              <url-pattern>*.jsf</url-pattern>
-            </servlet-mapping>
-           ...     
-    </web-app>
-+------------------------------------------------------------------------+
-
-  
-  
-  [[5]] Make sure that you use the JSF 2 header in your faces-config.
-
-+------------------------------------------------------------------------+
-<?xml version="1.0"  encoding="UTF-8"?>
-
-<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
-version="2.0">
-     ...
-</faces-config>
-+------------------------------------------------------------------------+
-
-
-
-  [[6]] Add the following line into war/WEB-INF/appengine-web.xml:
-
-+------------------------------------------------------------------------+
-      <sessions-enabled>true</sessions-enabled>
-+------------------------------------------------------------------------+
-
-
-  
-  [[7]]  Now you can add your stuff (pages, beans, etc.). You cannot use JSP as view technology on Google App Engine. 
-         You must use Facelets, which is the default view technology in JSF 2.
-         
-
-
-
-
-
-*{Deploying to App Engine Development Server (Your Local Server)}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  Right click on the project and select "Run As -> Web Application". This will start 
-  Google App Engine development server. You can see the port information on the console (default is 8888).
-  
-[images/gaetutorial-eclipse/05.jpg] Deployment to Local Development Server
-  
-
-
-
-
-*{Deploying to Google App Engine}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  [[1]]  Right-click on the project and select "Properties".
-  
-  [[2]]  Select "Google"->"App Engine".
-  
-  [[3]]  Select "Use Google App Engine" if not selected, and type your "Application ID". Press OK and close the dialog.
-  
-[images/gaetutorial-eclipse/06.jpg] Configuring the Google App Engine Project
-  
-  [[4]]  Right click on the project and select "Google" -> "Deploy to App Engine"
-    
-  [[5]]  Enter your account information, and the application will be deployed on your-app-id.appspot.com.
-
-[images/gaetutorial-eclipse/07.jpg] Deployment to Google App Engine
-
-  [[6]]  The URL for the application I deployed is : 
-         {{{http://myfaces2-tutorial.latest.aliok-com-tr-test.appspot.com/guess.jsf}http://myfaces2-tutorial.latest.aliok-com-tr-test.appspot.com/guess.jsf}}
diff --git a/parent/src/site/apt/myfaces2-googleappengine-idea-tutorial.apt b/parent/src/site/apt/myfaces2-googleappengine-idea-tutorial.apt
deleted file mode 100644
index 73d4192..0000000
--- a/parent/src/site/apt/myfaces2-googleappengine-idea-tutorial.apt
+++ /dev/null
@@ -1,382 +0,0 @@
- ------
- Tutorial : Configuring MyFaces 2 to run on Google App Engine with IntelliJ IDEA
- ------
- Ali Ok
- ------
- 2010-04-08
- ------- 
- 
-~~ Licensed to the Apache Software Foundation (ASF) under one
-~~ or more contributor license agreements.  See the NOTICE file
-~~ distributed with this work for additional information
-~~ regarding copyright ownership.  The ASF licenses this file
-~~ to you under the Apache License, Version 2.0 (the
-~~ "License"); you may not use this file except in compliance
-~~ with the License.  You may obtain a copy of the License at
-~~
-~~   http://www.apache.org/licenses/LICENSE-2.0
-~~
-~~ Unless required by applicable law or agreed to in writing,
-~~ software distributed under the License is distributed on an
-~~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-~~ KIND, either express or implied.  See the License for the
-~~ specific language governing permissions and limitations
-~~ under the License.
-
-~~ NOTE: For help with the syntax of this file, see:
-~~ http://maven.apache.org/doxia/references/apt-format.html
- 
-
-Tutorial : Configuring MyFaces 2 to run on Google App Engine with IntelliJ IDEA
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  Google App Engine support for MyFaces 2 made trunk and it is released with MyFaces Core 2.0.0-beta-3. 
-  In this tutorial, I will explain how to use it with IntelliJ IDEA. I assume that you have basic 
-  IDEA, JSF and Facelets knowledge.
-
-  You can find IDE-independent instructions {{{./googleappenginesupport.html}here}}. Additionally, there is a tutorial for Eclipse {{{./myfaces2-googleappengine-eclipse-tutorial.html}here}}. 
-
-  {{{http://sites.google.com/a/aliok.com.tr/upload/uploads/tutorial-gae-myfaces2-idea.zip?attredirects=0&d=1}Here}} 
-  is the complete source code and the IDEA project of the example application (which I took from 
-  {{{https://facelets.dev.java.net/nonav/docs/dev/docbook.html}Facelets Tutorial}}) that I configured to run on 
-  Google App Engine. 
-  
-  I deployed the application explained in this tutorial at: 
-  {{{http://myfaces2-tutorial-idea.latest.aliok-com-tr-test.appspot.com/guess.jsf}http://myfaces2-tutorial-idea.latest.aliok-com-tr-test.appspot.com/guess.jsf}} 
-
-  In order to run Myfaces on Google App Engine, you need to complete the steps below. Configuration explained in this document is tested with
-  Google App Engine 1.3.0.
-
-  If you're having trouble with the figures in this page, you can download all images from 
-  {{{http://upload.aliok.com.tr/uploads/myfaces2-gae-idea-tut-all-images.zip?attredirects=0&d=1}this link}}. 
-
-*Table of Content
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
-%{toc|section=1|fromDepth=1|toDepth=1}
-
-
-*{Requirements}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  * IntelliJ IDEA Ultimate Edition
-  
-  * Google App Engine SDK
-  
-  * MyFaces Core 2.0.0 Beta 3
-  
-  * EL API and Impl
-  
-  * Basic JSF and Facelets knowledge
-  
-  * Google App Engine Account :)
-  
-  
-  
-  
-*{Downloading and Configuration}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  [[1]]  Download {{{http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Java}App Engine SDK}} and extract it to somewhere.
-  
-  [[2]]  Download {{{http://myfaces.apache.org/download.html}MyFaces Core 2.0.0 Beta 3}} (or a later version) and extract it.
-  
-  [[3]]  Download {{{http://download.java.net/maven/glassfish/javax/el/el-api/1.1/el-api-1.1.jar}EL API}} and 
-         {{{http://download.java.net/maven/glassfish/org/glassfish/web/el-impl/1.1/el-impl-1.1.jar}EL Impl}} jars.
-  
-  [[4]]  We need IntelliJ IDEA {{{Ultimate Edition}http://www.jetbrains.com/idea/download/}}. Community edition doesn't have JavaEE support, 
-         thus {{{http://plugins.intellij.net/plugin/?&id=4254}Google App Engine Plugin}} doesn't work on it. I downloaded and 
-         installed IDEA version 9.0.1, and I don't know this plugin works for older versions of the IDE.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-01-welcome.jpg] IDEA Welcome
-
-  [[5]]  After installing the IDE and running for the first time, the IDE asked me which plugins that I want. I selected 
-  		 "Google App Engine Integration" and its dependencies. If you have an existing installation, make sure you have 
-  		 "Google App Engine Integration" plugin installed and enabled. 
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-02-plugins.jpg] IDEA Plugins Screen
-
-  [[6]]  Next, we will define our App Engine Devl Server.
-  
-    [[a]] To do this, navigate to IDE settings.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-03-settings-menu.jpg] IDEA Settings Menu
-
-    [[b]] Select "Application Servers" and click "Add" button. Select "Google App Engine Dev Server".
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-04-ide-settings.jpg] IDE Settings
-
-    [[c]] Select the path of the App Engine SDK.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-05-sdk-path.jpg] SDK Path Config
-
-    [[d]] You will see some JARS under the "Classes" node.
-    
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-06-sdk-verification.jpg] SDK Verification
-
-
-
-
-
-
-*{Creating and Configuring the Project}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  [[1]] First, we will create a new project:
-    
-    [[a]] Press "File - > New Project"
-    
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-07-new-project.jpg] New Project
-
-    [[b]] We will create the project from scratch. So, select it and press next.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-08-create-scratch.jpg] New Project from Scratch
-
-    [[c]] Type the project name, and select "Java Module".
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-09-project-naming.jpg] New Project Name
-    
-    [[d]] Let IDEA crete a source directory for us.
-    
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-10-scr-dir.jpg] New Project src Dir
-
-    [[e]] On this screen, select "Web Application" and "Google App Engine" nodes. 
-          Altough we will create a JSF project, don't select the "JavaServer Faces" node since IDEA doesn't 
-          support MyFaces 2 yet. After making sure the AppEngine SDK path is correct, 
-          press "Finish" and IDEA will create the project.
-          
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-11-tech-selection.jpg] Technology Selection
-
-  [[2]] Now, we will add the MyFaces jars as an "External Library". I did this step to solve 
-        compilation problems in my managed beans. Without explicitly adding an External Library, "javax.faces" 
-        namespace is not visible in my managed beans �which we will create in the next steps- even if the jars 
-        exist in "WEB-INF/lib". I am sure an experienced IDEA user can solve this problem in a better way.
-
-    [[a]] Right-click on the project and select "Module Settings".
-    
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-12-module-settings.jpg] Module Settings
-
-    [[b]] You will see a screen like the one below.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-13-project-libs.jpg] Project Libs
-
-    [[c]] Press the "+" button, type "MyFaces 2 Beta 3" and press "OK".
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-14-lib-name.jpg] Lib Name
-
-    [[d]] IDEA will ask which modules to add the library. Select the project you've created and press "OK".
-    
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-15-lib-module-selecting.jpg] Project Library Module Selection
-
-    [[e]] Now we will "attach" MyFaces2 jars. While the newly created library "MyFaces 2 Beta 3" is selected, 
-          press "Attach Classes" button and select the MyFaces (and dependencies) jars.
-          
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-16-attach-classes.jpg] Attach Classes
-
-    [[f]] You should have a screen like below. Press "OK".
-    
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-17-lib-verification.jpg] Library Verification
-
-    [[g]] Here is the external libraries so far:
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-18-ext-lib-verification.jpg] External Library Verification
-
-  [[3]] Put necessary jars into "WEB-INF/lib":
-  
-    [[a]] By default, IDEA does not create a "lib" folder under "WEB-INF". So we need to create one. 
-          Right-click on "WEB-INF" folder and select "New - > Directory".
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-19-lib-dir-create.jpg] lib Directory Creation
-          
-    [[b]] Type "lib" and press OK.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-20-lib-naming.jpg] lib Directory Naming
-          
-    [[c]] Copy the jars from the MyFaces release (myfaces-api-2.x.x.jar, lib/myfaces-impl-2.x.x.jar, 
-          lib/commons-logging-1.x.x.jar, lib/commons-beanutils-1.x.x.jar, lib/commons-codec-1.x.jar, 
-          commons-collections-3.x.jar, lib/commons-digester-x.x.jar, lib/commons-discovery-0.x.jar) 
-          and paste them into "WEB-INF/lib".
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-21-paste-jars.jpg] Paste MyFaces Jars
-
-    [[d]] Here is the "WEB-INF/lib" jars so far:
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-22-jar-verification.jpg] MyFaces Jar Verification
-
-    [[e]] Put el-api-x.x.jar and el-impl-1.1.jar �which you've downloaded at step 3 of 
-          "Downloading and Configuration" section- into "WEB-INF/lib".
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-23-paste-el-jars.jpg] Paste EL Jars
-
-  [[4]] XML configuration:
-
-    [[a]] Put the lines below into your web.xml file:
-    
-+---------------------------------------------------------------------------------------------------------+
-<web-app ...
-   ...
-   <!--
-      Need to set a secret to avoid javax.crypto.BadPaddingException.
-      "param-value" must be Base64 encoded.
-      More details: http://wiki.apache.org/myfaces/Secure_Your_Application
-   -->
-   <context-param>
-      <param-name>org.apache.myfaces.SECRET</param-name>
-      <param-value>NzY1NDMyMTA=</param-value>
-   </context-param>       
-
-   <!--
-      Facelets configuration fragment
-   -->
-   <context-param>
-      <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
-      <param-value>.xhtml</param-value>
-   </context-param>
-       
-   <servlet>
-      <servlet-name>Faces Servlet</servlet-name>
-      <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
-   </servlet>
-       
-   <servlet-mapping>
-      <servlet-name>Faces Servlet</servlet-name>
-      <url-pattern>*.jsf</url-pattern>
-   </servlet-mapping>
-   ...     
-</web-app>
-+---------------------------------------------------------------------------------------------------------+
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-24-web-xml-conf.jpg] web.xml Configuration
-
-    [[b]] Create a "faces-config.xml" file under your "WEB-INF" folder, and make sure that you use the JSF 2 header in it.
-
-+---------------------------------------------------------------------------------------------------------+
-<?xml version="1.0"  encoding="UTF-8"?>
-
-<faces-config
-   xmlns="http://java.sun.com/xml/ns/javaee"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
-   version="2.0">
-   ...
-</faces-config>
-+---------------------------------------------------------------------------------------------------------+
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-25-faces-config-conf.jpg] faces-config.xml Configuration
-
-    [[c]] Add the following line into war/WEB-INF/appengine-web.xml:
-
-+---------------------------------------------------------------------------------------------------------+
-   <sessions-enabled>true</sessions-enabled>
-+---------------------------------------------------------------------------------------------------------+
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-26-appengine-web-conf.jpg] appengine-web.xml Configuration
-
-  [[5]]  Now you can add your pages, beans etc. You cannot use JSP as view technology on Google App Engine. You must 
-         use Facelets, which is the default view technology in JSF 2.
-
-         {{{http://sites.google.com/a/aliok.com.tr/upload/uploads/tutorial-gae-myfaces2-idea.zip}Here}} is the complete 
-         source code and the IDEA project of the example application (which I took from 
-         {{{https://facelets.dev.java.net/nonav/docs/dev/docbook.html}Facelets Tutorial}}) that I configured to run on 
-         Google App Engine.
-
-
-
-
-*{Deploying to App Engine Development Server (Your Local Server)}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  [[1]] We need to define a run configuration.
-  
-	[[a]] Select "Run - > Edit Configurations"
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-27-edit-run-conf.jpg] Edit Run Configuration
-	
-	[[b]] Press "+" button to add a new configuration.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-28-add-new-run-conf.jpg] Adding New Run Configuration
-	
-    [[c]] Select "Google AppEngine Dev Server".
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-29-add-gae-run-conf.jpg] Add GAE Run Configuration
-	
-	[[d]] Type the configuration name, and make sure your screen seems like this:
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-30-gae-run-conf-settings.jpg] GAE Run Configuration Settings
-	
-	[[e]] Select "Build Artifacts" and click "..." button. We will configure, what to export.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-31-run-conf-build.jpg] Run Configuration Build Settings
-	
-	[[f]] Select "Test-GoogleAppEngine:war exploded".
-	
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-32-run-conf-artifacts.jpg] Run Configuration Build Artifacts
-	
-
-  [[2]] Now, you can see the configuration you've defined next to "Run" button.
-
-    [[a]] Select your run configuration and press "Run".
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-33-run-conf-select.jpg] Run Configuration Selection
-	
-	[[b]]  You will see MyFaces logs on the console. You shouldn't see any exception at this step. If you saw 
-	       one, make sure you've completed all steps above.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-34-myfaces-logs.jpg] MyFaces Logs
-	
-	[[c]] You can see your application at "localhost:8080". IDEA created a dummy 
-	      index.jsp before, so it is normal to see "Place your content here" text.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-35-local-page.jpg] Local Devl Server Page
-	
-	[[d]] You can stop the GAE Devl Server by pressing stop button.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-36-stop-local-server.jpg] Stopping Local Server
-
-
-
-
-
-*{Running Facelets Tutorial Example}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  
-  I've configured a project to run on Google App Engine, which you can find the sources 
-  {{{http://sites.google.com/a/aliok.com.tr/upload/uploads/tutorial-gae-myfaces2-idea.zip}here}}.
-  You can simply copy the files guess.xhtml, response.xhtml, template.xhtml and NumberBean.java to appropriate locations.
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-37-add-stuff.jpg] Add Stuff
-
-  You can see the application running below.
-  
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-38-guess-appl-local-page.jpg] Guess Application Local Page
-
-
-
-
-
-*{Deploying to App Engine}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  [[1]] You need to set application name and version in appengine-web.xml file. You can see my 
-        config below. "application" is your application id at Google App Engine (AppSpot Id), 
-		and version is anything you like.	
-
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-39-app-engine-appl-version-conf.jpg] App Engine Application and Version Configuration
-
-  [[2]] You can upload the application by selecting "Tools - > Upload App Engine Application".
-  
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-40-upload.jpg] Uploading
-
-  [[3]] IDEA will ask about building. Build the project by clicking "Yes".
-  
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-41-upload-build.jpg] Upload : Build
-
-  [[4]] Now, IDEA will use AppEngine SDK's batch jobs to upload application. You will be asked your email and password. 
-        You can see the output of my upload below.
-  
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-42-upload-console.jpg] Upload Console
-
-  [[5]] Your application is hosted at Google App Engine now. You can see this version of the 
-        application at "Versions" page of Google App Engine administration screen. Your application 
-		is hosted at <version-I-specified>.latest.<application-ID>.appspot.com
-  
-[images/gaetutorial-idea/myfaces2-gae-idea-tut-43-gae-page.jpg] GAE Page
diff --git a/parent/src/site/site.xml b/parent/src/site/site.xml
index ffbdb5b..7fb0534 100644
--- a/parent/src/site/site.xml
+++ b/parent/src/site/site.xml
@@ -104,7 +104,6 @@
         <menu name="Documentation" inherit="top">
             <item name="Quick Start"     href="http://myfaces.apache.org/wiki/core/user-guide/quick-start.html"/>
             <item name="Getting Started" href="http://myfaces.apache.org/wiki/core/user-guide/getting-started.html"/>
-            <item name="MyFaces and Google App Engine"  href="http://myfaces.apache.org/core20/googleappenginesupport.html"/>
             <item name="Generated Javadoc, Tlddoc and Others"        href="./javadoc.html"/>
             <item name="MyFaces Release Checklist"        href="./release-checklist.html"/>
             <item name="FAQ"             href="http://myfaces.apache.org/wiki/core/faq.html"/>
diff --git a/test/pom.xml b/test/pom.xml
index c6fcd5b..eb7246f 100644
--- a/test/pom.xml
+++ b/test/pom.xml
@@ -63,12 +63,6 @@
         </dependency>
 
         <dependency>
-            <groupId>commons-digester</groupId>
-            <artifactId>commons-digester</artifactId>
-            <version>1.8</version>
-        </dependency>
-
-        <dependency>
             <groupId>net.sourceforge.htmlunit</groupId>
             <artifactId>htmlunit</artifactId>
             <version>2.33</version>
diff --git a/test/src/main/java/org/apache/myfaces/test/config/ConfigParser.java b/test/src/main/java/org/apache/myfaces/test/config/ConfigParser.java
deleted file mode 100644
index b0ce0d6..0000000
--- a/test/src/main/java/org/apache/myfaces/test/config/ConfigParser.java
+++ /dev/null
@@ -1,709 +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.test.config;
-
-import java.io.IOException;
-import java.net.URL;
-
-import javax.faces.FactoryFinder;
-import javax.faces.application.Application;
-import javax.faces.application.ApplicationFactory;
-import javax.faces.render.ClientBehaviorRenderer;
-import javax.faces.render.RenderKit;
-import javax.faces.render.RenderKitFactory;
-import javax.faces.render.Renderer;
-
-import org.apache.commons.digester.Digester;
-import org.apache.commons.digester.Rule;
-import org.apache.myfaces.test.mock.MockRenderKit;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-
-/**
- * <p>Utility class to parse JavaServer Faces configuration resources, and
- * register JSF artifacts with the mock object hierarchy.</p>
- *
- * <p>The following artifacts are registered:</p>
- * <ul>
- *     <li><code>Converter</code> (by-id and by-class)</li>
- *     <li><code>RenderKit</code> and <code>Renderer</code>,<code>ClientBehaviorRenderer</code></li>
- *     <li><code>UIComponent</code></li>
- *     <li><code>Validator</code></li>
- *     <li><code>Behavior</code></li>
- * </ul>
- *
- * <p>Note that any declared <em>factory</em> instances are explicitly
- * <strong>NOT</strong> registered, allowing the mock object hierarchy
- * of the Myfaces Test Framework to manage these APIs.</p>
- *
- * <p><strong>USAGE NOTE</strong> - If you are using an instance of this
- * class within a subclass of <code>AbstractJsfTestCase</code> or
- * <code>AbstractJmockJsfTestCase</code>, be sure you have completed the
- * <code>setUp()</code> processing in this base class before calling one
- * of the <code>parse()</code> methods.</p>
- *
- * @since 1.0.0
- */
-public class ConfigParser
-{
-
-    // ------------------------------------------------------------ Constructors
-
-    /** Creates a new instance of ConfigParser */
-    public ConfigParser()
-    {
-    }
-
-    // ------------------------------------------------------ Manifest Constants
-
-    /**
-     * <p>Configuration resource URLs for the JSF RI.</p>
-     */
-    private static final String[] JSFRI_RESOURCES = { "/com/sun/faces/jsf-ri-runtime.xml", };
-
-    /**
-     * <p>Configuration resource URLs for Apache MyFaces.</p>
-     */
-    private static final String[] MYFACES_RESOURCES = { "/org/apache/myfaces/resource/standard-faces-config.xml", };
-
-    /**
-     * <p>Configuration resource URLs for Apache MyFaces 1.2.</p>
-     */
-    private static final String[] MYFACES_RESOURCES12 = { "/META-INF/standard-faces-config.xml", };
-
-    // ------------------------------------------------------ Instance Variables
-
-    /**
-     * <p>The <code>Digester</code> instance we will use for parsing.</p>
-     */
-    private Digester digester = null;
-
-    // ------------------------------------------------------- Public Properties
-
-    /**
-     * <p>Return the URLs of the platform configuration resources for this
-     * application.  The following platforms are currently supported:</p>
-     * <ul>
-     * <li>JavaServer Faces Reference Implementation (version 1.0 - 1.2)</li>
-     * <li>MyFaces (version 1.1)</li>
-     * </ul>
-     *
-     * <p>If MyFaces (version 1.2), currently under development, does not change
-     * the name of the configuration resource, it will be supported as well.</p>
-     */
-    public URL[] getPlatformURLs()
-    {
-
-        URL[] urls = translate(JSFRI_RESOURCES);
-        if (urls[0] == null)
-        {
-            urls = translate(MYFACES_RESOURCES12);
-            if (urls[0] == null)
-            {
-                urls = translate(MYFACES_RESOURCES);
-            }
-        }
-        return urls;
-
-    }
-
-    // ---------------------------------------------------------- Public Methods
-
-    /**
-     * <p>Parse the specified JavaServer Faces configuration resource, causing
-     * the appropriate JSF artifacts to be registered with the mock object
-     * hierarchy.</p>
-     *
-     * @param url <code>URL</code> of the configuration resource to parse
-     *
-     * @exception IOException if an input/output error occurs
-     * @exception SAXException if a parsing error occurs
-     */
-    public void parse(URL url) throws IOException, SAXException
-    {
-
-        // Acquire and configure the Digester instance we will use
-        Digester digester = digester();
-        ApplicationFactory factory = (ApplicationFactory) FactoryFinder
-                .getFactory(FactoryFinder.APPLICATION_FACTORY);
-        Application application = factory.getApplication();
-        digester.push(application);
-
-        // Perform the required parsing
-        try
-        {
-            digester.parse(url);
-        }
-        finally
-        {
-            digester.clear();
-        }
-
-    }
-
-    /**
-     * <p>Parse the specified set of JavaServer Faces configuration resources,
-     * in the listed order, causing the appropriate JSF artifacts to be registered
-     * with the mock object hierarchy.</p>
-     *
-     * @param urls <code>URL</code>s of the configuration resources to parse
-     *
-     * @exception IOException if an input/output error occurs
-     * @exception SAXException if a parsing error occurs
-     */
-    public void parse(URL[] urls) throws IOException, SAXException
-    {
-
-        for (int i = 0; i < urls.length; i++)
-        {
-            parse(urls[i]);
-        }
-
-    }
-
-    // --------------------------------------------------------- Private Methods
-
-    /**
-     * <p>Return the <code>Digester</code> instance we will use for parsing,
-     * creating and configuring a new instance if necessary.</p>
-     */
-    private Digester digester()
-    {
-
-        if (this.digester == null)
-        {
-            this.digester = new Digester();
-            digester.addRule("faces-config/component", new ComponentRule());
-            digester.addCallMethod("faces-config/component/component-type",
-                    "setComponentType", 0);
-            digester.addCallMethod("faces-config/component/component-class",
-                    "setComponentClass", 0);
-            digester.addRule("faces-config/converter", new ConverterRule());
-            digester.addCallMethod("faces-config/converter/converter-id",
-                    "setConverterId", 0);
-            digester.addCallMethod("faces-config/converter/converter-class",
-                    "setConverterClass", 0);
-            digester.addCallMethod(
-                    "faces-config/converter/converter-for-class",
-                    "setConverterForClass", 0);
-            digester.addRule("faces-config/render-kit", new RenderKitRule());
-            digester.addRule("faces-config/render-kit/render-kit-id",
-                    new RenderKitIdRule());
-            digester.addRule("faces-config/render-kit/renderer",
-                    new RendererRule());
-            digester.addCallMethod(
-                    "faces-config/render-kit/renderer/component-family",
-                    "setComponentFamily", 0);
-            digester.addCallMethod(
-                    "faces-config/render-kit/renderer/renderer-class",
-                    "setRendererClass", 0);
-            digester.addCallMethod(
-                    "faces-config/render-kit/renderer/renderer-type",
-                    "setRendererType", 0);
-            digester.addRule(
-                    "faces-config/render-kit/client-behavior-renderer",
-                    new ClientBehaviorRendererRule());
-            digester
-                    .addCallMethod(
-                            "faces-config/render-kit/client-behavior-renderer/client-behavior-renderer-type",
-                            "setClientBehaviorRendererType", 0);
-            digester
-                    .addCallMethod(
-                            "faces-config/render-kit/client-behavior-renderer/client-behavior-renderer-class",
-                            "setClientBehaviorRendererClass", 0);
-            digester.addRule("faces-config/validator", new ValidatorRule());
-            digester.addCallMethod("faces-config/validator/validator-id",
-                    "setValidatorId", 0);
-            digester.addCallMethod("faces-config/validator/validator-class",
-                    "setValidatorClass", 0);
-            digester.addRule("faces-config/behavior", new BehaviorRule());
-            digester.addCallMethod("faces-config/behavior/behavior-id",
-                    "setBehaviorId", 0);
-            digester.addCallMethod("faces-config/behavior/behavior-class",
-                    "setBehaviorClass", 0);
-        }
-        return this.digester;
-
-    }
-
-    /**
-     * <p>Translate an array of resource names into an array of resource URLs.</p>
-     *
-     * @param names Resource names to translate
-     */
-    private URL[] translate(String[] names)
-    {
-
-        URL[] results = new URL[names.length];
-        for (int i = 0; i < names.length; i++)
-        {
-            results[i] = this.getClass().getResource(names[i]);
-        }
-        return results;
-
-    }
-
-    // --------------------------------------------------------- Private Classes
-
-    /**
-     * <p>Data bean that stores information related to a component.</p>
-     */
-    class ComponentBean
-    {
-
-        private String componentClass;
-
-        public String getComponentClass()
-        {
-            return this.componentClass;
-        }
-
-        public void setComponentClass(String componentClass)
-        {
-            this.componentClass = componentClass;
-        }
-
-        private String componentType;
-
-        public String getComponentType()
-        {
-            return this.componentType;
-        }
-
-        public void setComponentType(String componentType)
-        {
-            this.componentType = componentType;
-        }
-
-    }
-
-    /**
-     * <p>Digester <code>Rule</code> for processing components.</p>
-     */
-    class ComponentRule extends Rule
-    {
-
-        public void begin(String namespace, String name, Attributes attributes)
-        {
-            getDigester().push(new ComponentBean());
-        }
-
-        public void end(String namespace, String name)
-        {
-            ComponentBean bean = (ComponentBean) getDigester().pop();
-            Application application = (Application) getDigester().peek();
-            application.addComponent(bean.getComponentType(), bean
-                    .getComponentClass());
-        }
-
-    }
-
-    /**
-     * <p>Data bean that stores information related to a converter.</p>
-     */
-    class ConverterBean
-    {
-
-        private String converterClass;
-
-        public String getConverterClass()
-        {
-            return this.converterClass;
-        }
-
-        public void setConverterClass(String converterClass)
-        {
-            this.converterClass = converterClass;
-        }
-
-        private String converterForClass;
-
-        public String getConverterForClass()
-        {
-            return this.converterForClass;
-        }
-
-        public void setConverterForClass(String converterForClass)
-        {
-            this.converterForClass = converterForClass;
-        }
-
-        private String converterId;
-
-        public String getConverterId()
-        {
-            return this.converterId;
-        }
-
-        public void setConverterId(String converterId)
-        {
-            this.converterId = converterId;
-        }
-
-    }
-
-    /**
-     * <p>Digester <code>Rule</code> for processing converers.</p>
-     */
-    class ConverterRule extends Rule
-    {
-
-        public void begin(String namespace, String name, Attributes attributes)
-        {
-            getDigester().push(new ConverterBean());
-        }
-
-        public void end(String namespace, String name)
-        {
-            ConverterBean bean = (ConverterBean) getDigester().pop();
-            Application application = (Application) getDigester().peek();
-            if (bean.getConverterId() != null)
-            {
-                application.addConverter(bean.getConverterId(), bean
-                        .getConverterClass());
-            }
-            else
-            {
-                Class clazz = null;
-                try
-                {
-                    clazz = classForName(bean.getConverterForClass());
-                }
-                catch (ClassNotFoundException e)
-                {
-                    throw new IllegalArgumentException(
-                            "java.lang.ClassNotFoundException: "
-                                    + bean.getConverterForClass());
-                }
-                application.addConverter(clazz, bean.getConverterClass());
-            }
-        }
-
-    }
-
-    private Class classForName(String type) throws ClassNotFoundException
-    {
-        try
-        {
-            // Try WebApp ClassLoader first
-            return Class.forName(type, false, // do not initialize for faster startup
-                    Thread.currentThread().getContextClassLoader());
-        }
-        catch (ClassNotFoundException ignore)
-        {
-            // fallback: Try ClassLoader for ClassUtils (i.e. the myfaces.jar lib)
-            return Class.forName(type, false, // do not initialize for faster startup
-                    this.getClass().getClassLoader());
-        }
-    }
-
-    /**
-     * <p>Digester <code>Rule</code> for processing render kits.</p>
-     */
-    class RenderKitRule extends Rule
-    {
-
-        public void begin(String namespace, String name, Attributes attributes)
-        {
-            RenderKitFactory factory = (RenderKitFactory) FactoryFinder
-                    .getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-            getDigester().push(
-                    factory.getRenderKit(null,
-                            RenderKitFactory.HTML_BASIC_RENDER_KIT));
-        }
-
-        public void end(String namespace, String name)
-        {
-            getDigester().pop();
-        }
-
-    }
-
-    /**
-     * <p>Digester <code>Rule</code> for processing render kit identifiers.</p>
-     */
-    class RenderKitIdRule extends Rule
-    {
-
-        public void body(String namespace, String name, String text)
-        {
-            String renderKitId = text.trim();
-            RenderKitFactory factory = (RenderKitFactory) FactoryFinder
-                    .getFactory(FactoryFinder.RENDER_KIT_FACTORY);
-            RenderKit renderKit = factory.getRenderKit(null, renderKitId);
-            if (renderKit == null)
-            {
-                renderKit = new MockRenderKit();
-                factory.addRenderKit(renderKitId, renderKit);
-            }
-            getDigester().pop();
-            getDigester().push(renderKit);
-        }
-
-    }
-
-    /**
-     * <p>Data bean that stores information related to a renderer.</p>
-     */
-    class RendererBean
-    {
-
-        private String componentFamily;
-
-        public String getComponentFamily()
-        {
-            return this.componentFamily;
-        }
-
-        public void setComponentFamily(String componentFamily)
-        {
-            this.componentFamily = componentFamily;
-        }
-
-        private String rendererClass;
-
-        public String getRendererClass()
-        {
-            return this.rendererClass;
-        }
-
-        public void setRendererClass(String rendererClass)
-        {
-            this.rendererClass = rendererClass;
-        }
-
-        private String rendererType;
-
-        public String getRendererType()
-        {
-            return this.rendererType;
-        }
-
-        public void setRendererType(String rendererType)
-        {
-            this.rendererType = rendererType;
-        }
-
-    }
-
-    /**
-     * <p>Digester <code>Rule</code> for processing renderers.</p>
-     */
-    class RendererRule extends Rule
-    {
-
-        public void begin(String namespace, String name, Attributes attributes)
-        {
-            getDigester().push(new RendererBean());
-        }
-
-        public void end(String namespace, String name)
-        {
-            RendererBean bean = (RendererBean) getDigester().pop();
-            RenderKit kit = (RenderKit) getDigester().peek();
-            Renderer renderer = null;
-            Class clazz = null;
-            try
-            {
-                clazz = classForName(bean.getRendererClass());
-                renderer = (Renderer) clazz.newInstance();
-            }
-            catch (Exception e)
-            {
-                throw new IllegalArgumentException(
-                        "Exception while trying to instantiate"
-                                + " renderer class '" + bean.getRendererClass()
-                                + "' : " + e.getMessage());
-            }
-            kit.addRenderer(bean.getComponentFamily(), bean.getRendererType(),
-                    renderer);
-        }
-
-    }
-
-    /**
-     * <p>Data bean that stores information related to a validator.</p>
-     */
-    class ValidatorBean
-    {
-
-        private String validatorClass;
-
-        public String getValidatorClass()
-        {
-            return this.validatorClass;
-        }
-
-        public void setValidatorClass(String validatorClass)
-        {
-            this.validatorClass = validatorClass;
-        }
-
-        private String validatorId;
-
-        public String getValidatorId()
-        {
-            return this.validatorId;
-        }
-
-        public void setValidatorId(String validatorId)
-        {
-            this.validatorId = validatorId;
-        }
-
-    }
-
-    /**
-     * <p>Digester <code>Rule</code> for processing validators.</p>
-     */
-    class ValidatorRule extends Rule
-    {
-
-        public void begin(String namespace, String name, Attributes attributes)
-        {
-            getDigester().push(new ValidatorBean());
-        }
-
-        public void end(String namespace, String name)
-        {
-            ValidatorBean bean = (ValidatorBean) getDigester().pop();
-            Application application = (Application) getDigester().peek();
-            application.addValidator(bean.getValidatorId(), bean
-                    .getValidatorClass());
-        }
-
-    }
-
-    class ClientBehaviorRendererBean
-    {
-        private String clientBehaviorRendererType;
-
-        private String clientBehaviorRendererClass;
-
-        public String getClientBehaviorRendererType()
-        {
-            return clientBehaviorRendererType;
-        }
-
-        public void setClientBehaviorRendererType(
-                String clientBehaviorRendererType)
-        {
-            this.clientBehaviorRendererType = clientBehaviorRendererType;
-        }
-
-        public String getClientBehaviorRendererClass()
-        {
-            return clientBehaviorRendererClass;
-        }
-
-        public void setClientBehaviorRendererClass(
-                String clientBehaviorRendererClass)
-        {
-            this.clientBehaviorRendererClass = clientBehaviorRendererClass;
-        }
-    }
-
-    class ClientBehaviorRendererRule extends Rule
-    {
-        public void begin(String namespace, String name, Attributes attributes)
-        {
-            getDigester().push(new ClientBehaviorRendererBean());
-        }
-
-        public void end(String namespace, String name)
-        {
-            ClientBehaviorRendererBean bean = (ClientBehaviorRendererBean) getDigester()
-                    .pop();
-            RenderKit kit = (RenderKit) getDigester().peek();
-            ClientBehaviorRenderer renderer = null;
-            Class clazz = null;
-            try
-            {
-                clazz = classForName(bean.getClientBehaviorRendererClass());
-                renderer = (ClientBehaviorRenderer) clazz.newInstance();
-            }
-            catch (Exception e)
-            {
-                throw new IllegalArgumentException(
-                        "Exception while trying to instantiate"
-                                + " client behavior renderer class '"
-                                + bean.getClientBehaviorRendererClass()
-                                + "' : " + e.getMessage());
-            }
-            kit.addClientBehaviorRenderer(bean.getClientBehaviorRendererType(),
-                    renderer);
-        }
-    }
-
-    /**
-     * <p>Data bean that stores information related to a behavior.</p>
-     */
-    class BehaviorBean
-    {
-
-        private String behaviorClass;
-
-        public String getBehaviorClass()
-        {
-            return this.behaviorClass;
-        }
-
-        @SuppressWarnings("unused")
-        public void setBehaviorClass(String behaviorClass)
-        {
-            this.behaviorClass = behaviorClass;
-        }
-
-        private String behaviorId;
-
-        public String getBehaviorId()
-        {
-            return this.behaviorId;
-        }
-
-        @SuppressWarnings("unused")
-        public void setBehaviorId(String behaviorId)
-        {
-            this.behaviorId = behaviorId;
-        }
-
-    }
-
-    /**
-     * <p>Digester <code>Rule</code> for processing behaviors.</p>
-     */
-    class BehaviorRule extends Rule
-    {
-
-        public void begin(String namespace, String name, Attributes attributes)
-        {
-            getDigester().push(new BehaviorBean());
-        }
-
-        public void end(String namespace, String name)
-        {
-            BehaviorBean bean = (BehaviorBean) getDigester().pop();
-            Application application = (Application) getDigester().peek();
-            application.addBehavior(bean.getBehaviorId(), bean
-                    .getBehaviorClass());
-        }
-
-    }
-}
diff --git a/test/src/main/java/org/apache/myfaces/test/mock/MockApplication20.java b/test/src/main/java/org/apache/myfaces/test/mock/MockApplication20.java
index 0960545..976a1b3 100644
--- a/test/src/main/java/org/apache/myfaces/test/mock/MockApplication20.java
+++ b/test/src/main/java/org/apache/myfaces/test/mock/MockApplication20.java
@@ -31,6 +31,8 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.el.ELContext;
 import javax.el.ValueExpression;
@@ -59,8 +61,6 @@ import javax.faces.render.Renderer;
 import javax.faces.validator.Validator;
 import javax.faces.view.ViewDeclarationLanguage;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.apache.myfaces.test.mock.resource.MockResourceHandler;
 
 /**
@@ -213,7 +213,7 @@ public abstract class MockApplication20 extends MockApplication12
 
     // ------------------------------------------------------ Instance Variables
 
-    private static final Log log = LogFactory.getLog(MockApplication20.class);
+    private static final Logger log = Logger.getLogger(MockApplication20.class.getName());
 
     private final Map<Class<? extends SystemEvent>, SystemListenerEntry> _systemEventListenerClassMap = 
         new ConcurrentHashMap<Class<? extends SystemEvent>, SystemListenerEntry>();
@@ -468,7 +468,7 @@ public abstract class MockApplication20 extends MockApplication12
         if (renderer == null)
         {
             // If no such Renderer can be found, a message must be logged with a helpful error message.
-            log.error("renderer cannot be found for component type " + componentType + " and renderer type "
+            log.log(Level.SEVERE, "renderer cannot be found for component type " + componentType + " and renderer type "
                     + rendererType);
         }
         else
@@ -620,16 +620,18 @@ public abstract class MockApplication20 extends MockApplication12
             // If the act of invoking the processListener method causes an AbortProcessingException to be thrown, 
             // processing of the listeners must be aborted, no further processing of the listeners for this event must 
             // take place, and the exception must be logged with Level.SEVERE.
-            log.error("Event processing was aborted", e);
+            log.log(Level.SEVERE, "Event processing was aborted", e);
         }
     }
 
+    @Override
     public void publishEvent(FacesContext facesContext,
             Class<? extends SystemEvent> systemEventClass, Object source)
     {
         publishEvent(facesContext, systemEventClass, source.getClass(), source);
     }
 
+    @Override
     public ProjectStage getProjectStage()
     {
         // If the value has already been determined by a previous call to this
@@ -994,17 +996,17 @@ public abstract class MockApplication20 extends MockApplication12
                     }
                     catch (InstantiationException e)
                     {
-                        log.error("Could not instantiate component class name = " + fqcn, e);
+                        log.log(Level.SEVERE, "Could not instantiate component class name = " + fqcn, e);
                         throw new FacesException("Could not instantiate component class name = " + fqcn, e);
                     }
                     catch (IllegalAccessException e)
                     {
-                        log.error("Could not instantiate component class name = " + fqcn, e);
+                        log.log(Level.SEVERE, "Could not instantiate component class name = " + fqcn, e);
                         throw new FacesException("Could not instantiate component class name = " + fqcn, e);
                     }
                     catch (Exception e)
                     {
-                        log.error("Could not instantiate component class name = " + fqcn, e);
+                        log.log(Level.SEVERE, "Could not instantiate component class name = " + fqcn, e);
                     }
                 }
 
diff --git a/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/DefaultRestoreViewSupport.java b/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/DefaultRestoreViewSupport.java
index 813066d..8b5c509 100644
--- a/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/DefaultRestoreViewSupport.java
+++ b/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/DefaultRestoreViewSupport.java
@@ -21,6 +21,8 @@ package org.apache.myfaces.test.mock.lifecycle;
 
 import java.util.Iterator;
 import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.el.ValueExpression;
 import javax.faces.FacesException;
@@ -28,9 +30,6 @@ import javax.faces.component.UIComponent;
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
 /**
  * @author Mathias Broekelmann (latest modification by $Author: mbr $)
  * @version $Revision: 517403 $ $Date: 2007-03-12 22:17:00 +0100 (Mo, 12 Mrz 2007) $
@@ -42,7 +41,7 @@ public class DefaultRestoreViewSupport implements RestoreViewSupport
 
     private static final String JAVAX_SERVLET_INCLUDE_PATH_INFO = "javax.servlet.include.path_info";
 
-    private final Log log = LogFactory.getLog(DefaultRestoreViewSupport.class);
+    private static final Logger log = Logger.getLogger(DefaultRestoreViewSupport.class.getName());
 
     public void processComponentBinding(FacesContext facesContext,
             UIComponent component)
@@ -67,12 +66,11 @@ public class DefaultRestoreViewSupport implements RestoreViewSupport
 
         String viewId = (String) requestMap
                 .get(JAVAX_SERVLET_INCLUDE_PATH_INFO);
-        boolean traceEnabled = log.isTraceEnabled();
         if (viewId != null)
         {
-            if (traceEnabled)
+            if (log.isLoggable(Level.FINEST))
             {
-                log.trace("Calculated viewId '" + viewId
+                log.log(Level.FINEST, "Calculated viewId '" + viewId
                         + "' from request param '"
                         + JAVAX_SERVLET_INCLUDE_PATH_INFO + '\'');
             }
@@ -80,9 +78,9 @@ public class DefaultRestoreViewSupport implements RestoreViewSupport
         else
         {
             viewId = externalContext.getRequestPathInfo();
-            if (viewId != null && traceEnabled)
+            if (viewId != null && log.isLoggable(Level.FINEST))
             {
-                log.trace("Calculated viewId '" + viewId
+                log.log(Level.FINEST, "Calculated viewId '" + viewId
                         + "' from request path info");
             }
         }
@@ -91,9 +89,9 @@ public class DefaultRestoreViewSupport implements RestoreViewSupport
         {
             viewId = (String) requestMap
                     .get(JAVAX_SERVLET_INCLUDE_SERVLET_PATH);
-            if (viewId != null && traceEnabled)
+            if (viewId != null && log.isLoggable(Level.FINEST))
             {
-                log.trace("Calculated viewId '" + viewId
+                log.log(Level.FINEST, "Calculated viewId '" + viewId
                         + "' from request param '"
                         + JAVAX_SERVLET_INCLUDE_SERVLET_PATH + '\'');
             }
@@ -102,9 +100,9 @@ public class DefaultRestoreViewSupport implements RestoreViewSupport
         if (viewId == null)
         {
             viewId = externalContext.getRequestServletPath();
-            if (viewId != null && traceEnabled)
+            if (viewId != null && log.isLoggable(Level.FINEST))
             {
-                log.trace("Calculated viewId '" + viewId
+                log.log(Level.FINEST, "Calculated viewId '" + viewId
                         + "' from request servlet path");
             }
         }
diff --git a/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/PhaseListenerManager.java b/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/PhaseListenerManager.java
index 84a21aa..30bab5a 100644
--- a/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/PhaseListenerManager.java
+++ b/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/PhaseListenerManager.java
@@ -21,13 +21,13 @@ package org.apache.myfaces.test.mock.lifecycle;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import javax.faces.context.FacesContext;
 import javax.faces.event.PhaseEvent;
 import javax.faces.event.PhaseId;
 import javax.faces.event.PhaseListener;
 import javax.faces.lifecycle.Lifecycle;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 /**
  * This class encapsulates the logic used to call PhaseListeners.  It was 
@@ -40,8 +40,7 @@ import org.apache.commons.logging.LogFactory;
 class PhaseListenerManager
 {
 
-    private static final Log log = LogFactory
-            .getLog(PhaseListenerManager.class);
+    private static final Logger log = Logger.getLogger(PhaseListenerManager.class.getName());
 
     private Lifecycle lifecycle;
     private FacesContext facesContext;
@@ -88,7 +87,7 @@ class PhaseListenerManager
                 catch (Exception e)
                 {
                     beforePhaseSuccess[i] = false; // redundant - for clarity
-                    log.error("Exception in PhaseListener "
+                    log.log(Level.SEVERE, "Exception in PhaseListener "
                             + phaseId.toString() + " beforePhase.", e);
                     return;
                 }
@@ -115,7 +114,7 @@ class PhaseListenerManager
                 }
                 catch (Exception e)
                 {
-                    log.error("Exception in PhaseListener "
+                    log.log(Level.SEVERE, "Exception in PhaseListener "
                             + phaseId.toString() + " afterPhase", e);
                 }
             }
diff --git a/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/RestoreViewExecutor.java b/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/RestoreViewExecutor.java
index 4e92def..d188cd2 100644
--- a/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/RestoreViewExecutor.java
+++ b/test/src/main/java/org/apache/myfaces/test/mock/lifecycle/RestoreViewExecutor.java
@@ -19,8 +19,8 @@
 
 package org.apache.myfaces.test.mock.lifecycle;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 import org.apache.myfaces.test.util.Jsf11Utils;
 import org.apache.myfaces.test.util.Jsf12Utils;
 import org.apache.myfaces.test.util.JsfVersion;
@@ -44,7 +44,7 @@ import javax.faces.event.PhaseId;
 class RestoreViewExecutor implements PhaseExecutor
 {
 
-    private static final Log log = LogFactory.getLog(RestoreViewExecutor.class);
+    private static final Logger log = Logger.getLogger(RestoreViewExecutor.class.getName());
     private RestoreViewSupport _restoreViewSupport;
 
     public boolean execute(FacesContext facesContext)
@@ -72,9 +72,9 @@ class RestoreViewExecutor implements PhaseExecutor
 
         if (viewRoot != null)
         {
-            if (log.isTraceEnabled())
+            if (log.isLoggable(Level.FINEST))
             {
-                log.trace("View already exists in the FacesContext");
+                log.log(Level.FINEST, "View already exists in the FacesContext");
             }
 
             viewRoot.setLocale(facesContext.getExternalContext()
@@ -88,9 +88,9 @@ class RestoreViewExecutor implements PhaseExecutor
         // Determine if this request is a postback or initial request
         if (restoreViewSupport.isPostback(facesContext))
         {
-            if (log.isTraceEnabled())
+            if (log.isLoggable(Level.FINEST))
             {
-                log.trace("Request is a postback");
+                log.log(Level.FINEST, "Request is a postback");
             }
 
             viewRoot = viewHandler.restoreView(facesContext, viewId);
@@ -109,10 +109,9 @@ class RestoreViewExecutor implements PhaseExecutor
         }
         else
         {
-            if (log.isTraceEnabled())
+            if (log.isLoggable(Level.FINEST))
             {
-                log
-                        .trace("Request is not a postback. New UIViewRoot will be created");
+                log.log(Level.FINEST, "Request is not a postback. New UIViewRoot will be created");
             }
 
             viewRoot = viewHandler.createView(facesContext, viewId);
@@ -183,8 +182,7 @@ class RestoreViewExecutor implements PhaseExecutor
             int dot = viewId.lastIndexOf('.');
             if (dot == -1)
             {
-                log
-                        .error("Assumed extension mapping, but there is no extension in "
+                log.log(Level.SEVERE, "Assumed extension mapping, but there is no extension in "
                                 + viewId);
                 viewId = null;
             }


Mime
View raw message