You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mm...@apache.org on 2006/01/23 09:16:54 UTC

svn commit: r371488 - in /myfaces/core/trunk/api/src: main/java/javax/faces/component/ test/java/javax/faces/ test/java/javax/faces/component/ test/java/org/apache/myfaces/ test/java/org/apache/myfaces/mock/

Author: mmarinschek
Date: Mon Jan 23 00:16:37 2006
New Revision: 371488

URL: http://svn.apache.org/viewcvs?rev=371488&view=rev
Log:
Started architecture for callbacks, added some testing for getClientId and findComponent, moved the stuff I implemented in UIComponent for partial validation out to the new SubForm

Added:
    myfaces/core/trunk/api/src/test/java/javax/faces/MockRenderKit.java
    myfaces/core/trunk/api/src/test/java/javax/faces/MockRenderKitFactory.java
    myfaces/core/trunk/api/src/test/java/org/apache/myfaces/mock/MockExternalContext.java
Modified:
    myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java
    myfaces/core/trunk/api/src/main/java/javax/faces/component/UIInput.java
    myfaces/core/trunk/api/src/main/java/javax/faces/component/_ComponentUtils.java
    myfaces/core/trunk/api/src/test/java/javax/faces/component/UIComponentBaseTest.java
    myfaces/core/trunk/api/src/test/java/org/apache/myfaces/FacesContextHelper.java

Modified: myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java
URL: http://svn.apache.org/viewcvs/myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java?rev=371488&r1=371487&r2=371488&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/UIComponentBase.java Mon Jan 23 00:16:37 2006
@@ -58,9 +58,6 @@
 {
     private static Log log = LogFactory.getLog(UIComponentBase.class);
 
-    private static final String PARTIAL_ENABLED = "org.apache.myfaces.IsPartialPhaseExecutionEnabled";
-    private static final String ACTION_FOR_LIST = "org.apache.myfaces.ActionForList";
-
     private _ComponentAttributesMap _attributesMap = null;
     private Map _valueBindingMap = null;
     private List _childrenList = null;
@@ -615,82 +612,17 @@
         }
     }
 
-    /**Sets up information if this component is included in
-     * the group of components which are associated with the current action.
-     *
-     * @param context
-     * @return true if there has been a change by this setup which has to be undone after the phase finishes.
-     */
-    private boolean setupPartialInfo(FacesContext context)
-    {
-        //the following section is not in the spec
-        //there is no place to put it into the actual implementation, though
-        //we want to execute validation (and model update) only
-        //if certain conditions are met
-        //especially, we want to switch validation/update on/off depending on
-        //the attribute "actionFor" of a MyFaces extended button or link
-        //if you use commandButtons which don't set these
-        //request parameters, this won't cause any adverse effects
-        //except the additional performance hit of getting the request-parameter
-
-        //is it necessary to remove the request-parameter again?
-        boolean tearDownRequired = false;
-
-        //get the list of (parent) client-ids for which a validation should be performed
-        List li = (List) context.getExternalContext().getRequestMap().get(
-                ACTION_FOR_LIST);
-
-        //check if the list is existing at all - if not, we want to validate in any case.
-        if(li==null || li.size()==0)
-        {
-            if(!context.getExternalContext().getRequestMap().containsKey(PARTIAL_ENABLED))
-            {
-                context.getExternalContext().getRequestMap().put(PARTIAL_ENABLED,Boolean.TRUE);
-                tearDownRequired = true;
-            }
-        }
-        //if there is a list, check if the current client id
-        //matches an entry of the list
-        else if(li.contains(getClientId(context)))
-        {
-            if(!context.getExternalContext().getRequestMap().containsKey(PARTIAL_ENABLED))
-            {
-                context.getExternalContext().getRequestMap().put(PARTIAL_ENABLED,Boolean.TRUE);
-                tearDownRequired = true;
-            }
-        }
-
-        return tearDownRequired;
-    }
-
-    /**
-     * Remove the information about this component being included in the partial
-     * phase execution.
-     *
-     * @param context
-     */
-    private void tearDownPartialInfo(FacesContext context)
-    {
-        context.getExternalContext().getRequestMap().remove(PARTIAL_ENABLED);
-    }
 
     public void processValidators(FacesContext context)
     {
         if (context == null) throw new NullPointerException("context");
         if (!isRendered()) return;
 
-        boolean tearDownRequired = setupPartialInfo(context);
-
         for (Iterator it = getFacetsAndChildren(); it.hasNext(); )
         {
             UIComponent childOrFacet = (UIComponent)it.next();
             childOrFacet.processValidators(context);
         }
-
-        if(tearDownRequired)
-        {
-            tearDownPartialInfo(context);
-        }
     }
 
     /**
@@ -707,17 +639,10 @@
         if (context == null) throw new NullPointerException("context");
         if (!isRendered()) return;
 
-        boolean tearDownRequired = setupPartialInfo(context);
-
         for (Iterator it = getFacetsAndChildren(); it.hasNext(); )
         {
             UIComponent childOrFacet = (UIComponent)it.next();
             childOrFacet.processUpdates(context);
-        }
-
-        if(tearDownRequired)
-        {
-            tearDownPartialInfo(context);
         }
     }
 

Modified: myfaces/core/trunk/api/src/main/java/javax/faces/component/UIInput.java
URL: http://svn.apache.org/viewcvs/myfaces/core/trunk/api/src/main/java/javax/faces/component/UIInput.java?rev=371488&r1=371487&r2=371488&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/UIInput.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/UIInput.java Mon Jan 23 00:16:37 2006
@@ -169,18 +169,6 @@
         }
     }
 
-    /**
-     * execute phase only if the component is partial-enabled or one
-     * of its ancestors is partial-enabled
-     *
-     * @param context
-     * @return true if component is being included in partial phase execution
-     */
-    private boolean isPartialEnabled(FacesContext context)
-    {
-        return context.getExternalContext().getRequestMap().get(PARTIAL_ENABLED)==Boolean.TRUE;
-    }
-
     public void processValidators(FacesContext context)
     {
         if (context == null) throw new NullPointerException("context");
@@ -188,23 +176,20 @@
 
         super.processValidators(context);
 
-        if(isPartialEnabled(context))
+        if (!isImmediate())
         {
-            if (!isImmediate())
+            try
             {
-                try
-                {
-                    validate(context);
-                }
-                catch (RuntimeException e)
-                {
-                    context.renderResponse();
-                    throw e;
-                }
-                if (!isValid())
-                {
-                    context.renderResponse();
-                }
+                validate(context);
+            }
+            catch (RuntimeException e)
+            {
+                context.renderResponse();
+                throw e;
+            }
+            if (!isValid())
+            {
+                context.renderResponse();
             }
         }
     }
@@ -216,21 +201,18 @@
 
         super.processUpdates(context);
 
-        if(isPartialEnabled(context))
+        try
         {
-            try
-            {
-                updateModel(context);
-            }
-            catch (RuntimeException e)
-            {
-                context.renderResponse();
-                throw e;
-            }
-            if (!isValid())
-            {
-                context.renderResponse();
-            }
+            updateModel(context);
+        }
+        catch (RuntimeException e)
+        {
+            context.renderResponse();
+            throw e;
+        }
+        if (!isValid())
+        {
+            context.renderResponse();
         }
     }
 

Modified: myfaces/core/trunk/api/src/main/java/javax/faces/component/_ComponentUtils.java
URL: http://svn.apache.org/viewcvs/myfaces/core/trunk/api/src/main/java/javax/faces/component/_ComponentUtils.java?rev=371488&r1=371487&r2=371488&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/java/javax/faces/component/_ComponentUtils.java (original)
+++ myfaces/core/trunk/api/src/main/java/javax/faces/component/_ComponentUtils.java Mon Jan 23 00:16:37 2006
@@ -132,7 +132,7 @@
             }
             else
             {
-                return id.equals(cmp.getId()+"_"+uiData.getRowIndex());
+                return id.equals(cmp.getId()+NamingContainer.SEPARATOR_CHAR+uiData.getRowIndex());
             }
         }
 
@@ -141,7 +141,7 @@
 
     private static boolean dynamicIdIsEqual(String dynamicId, String id)
     {
-        return dynamicId.matches(id+"_[0-9]*");
+        return dynamicId.matches(id+":[0-9]*");
     }
 
 

Added: myfaces/core/trunk/api/src/test/java/javax/faces/MockRenderKit.java
URL: http://svn.apache.org/viewcvs/myfaces/core/trunk/api/src/test/java/javax/faces/MockRenderKit.java?rev=371488&view=auto
==============================================================================
--- myfaces/core/trunk/api/src/test/java/javax/faces/MockRenderKit.java (added)
+++ myfaces/core/trunk/api/src/test/java/javax/faces/MockRenderKit.java Mon Jan 23 00:16:37 2006
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2004-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.faces;
+
+import javax.faces.render.RenderKit;
+import javax.faces.render.Renderer;
+import javax.faces.render.ResponseStateManager;
+import javax.faces.context.ResponseWriter;
+import javax.faces.context.ResponseStream;
+import java.io.Writer;
+import java.io.OutputStream;
+
+public class MockRenderKit extends RenderKit
+{
+    public void addRenderer(String family, String rendererType, Renderer renderer)
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Renderer getRenderer(String family, String rendererType)
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public ResponseStateManager getResponseStateManager()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public ResponseWriter createResponseWriter(Writer writer, String contentTypeList, String characterEncoding)
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public ResponseStream createResponseStream(OutputStream out)
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+}

Added: myfaces/core/trunk/api/src/test/java/javax/faces/MockRenderKitFactory.java
URL: http://svn.apache.org/viewcvs/myfaces/core/trunk/api/src/test/java/javax/faces/MockRenderKitFactory.java?rev=371488&view=auto
==============================================================================
--- myfaces/core/trunk/api/src/test/java/javax/faces/MockRenderKitFactory.java (added)
+++ myfaces/core/trunk/api/src/test/java/javax/faces/MockRenderKitFactory.java Mon Jan 23 00:16:37 2006
@@ -0,0 +1,62 @@
+/*
+ * Copyright 2004-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package javax.faces;
+
+import javax.faces.render.RenderKitFactory;
+import javax.faces.render.RenderKit;
+import javax.faces.context.FacesContext;
+import java.util.Iterator;
+
+
+public class MockRenderKitFactory extends RenderKitFactory
+{
+    RenderKitFactory delegate;
+
+    public MockRenderKitFactory(RenderKitFactory factory)
+    {
+        delegate = factory;
+    }
+
+    public MockRenderKitFactory()
+    {
+
+    }
+
+    public void addRenderKit(String renderKitId, RenderKit renderKit)
+    {
+        if(delegate != null)
+        {
+            delegate.addRenderKit(renderKitId, renderKit);
+        }
+    }
+
+    public RenderKit getRenderKit(FacesContext context, String renderKitId)
+    {
+        if(delegate != null)
+        {
+            return delegate.getRenderKit(context, renderKitId);
+        }
+        return new MockRenderKit();
+    }
+
+    public Iterator getRenderKitIds()
+    {
+        if(delegate != null)
+        {
+            return delegate.getRenderKitIds();
+        }
+        return null;    }
+}

Modified: myfaces/core/trunk/api/src/test/java/javax/faces/component/UIComponentBaseTest.java
URL: http://svn.apache.org/viewcvs/myfaces/core/trunk/api/src/test/java/javax/faces/component/UIComponentBaseTest.java?rev=371488&r1=371487&r2=371488&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/test/java/javax/faces/component/UIComponentBaseTest.java (original)
+++ myfaces/core/trunk/api/src/test/java/javax/faces/component/UIComponentBaseTest.java Mon Jan 23 00:16:37 2006
@@ -18,8 +18,12 @@
 
 import javax.faces.context.FacesContext;
 import javax.faces.el.ValueBinding;
+import javax.faces.FactoryFinder;
+import javax.faces.MockApplicationFactory;
+import javax.faces.MockRenderKitFactory;
 
 import org.apache.myfaces.AbstractTestCase;
+import org.apache.myfaces.FacesContextHelper;
 import org.easymock.MockControl;
 import org.easymock.classextension.MockClassControl;
 
@@ -116,15 +120,59 @@
    */
   public void testGetClientIdFacesContext() {
 
-  }
+      FacesContext context = new FacesContextHelper();
 
-  /*
-   * Test method for 'javax.faces.component.UIComponentBase.getId()'
-   */
-  public void testGetId() {
+      UIInput input = createInputInTree(context);
+
+      String str = input.getClientId(context);
+
+      assertEquals(str, "data:input");
+
+      UIData uiData = (UIData) input.getParent().getParent();
+
+      uiData.setRowIndex(1);
 
+      str = input.getClientId(context);
   }
 
+    private UIInput createInputInTree(FacesContext context)
+    {
+        UIViewRoot viewRoot = new UIViewRoot();
+        viewRoot.setId("root");
+
+        UIData uiData = new UIData();
+        uiData.setId("data");
+
+        UIColumn column = new UIColumn();
+
+        uiData.getChildren().add(column);
+
+        UIInput input = new UIInput();
+        input.setId("input");
+
+        column.getChildren().add(input);
+
+        viewRoot.getChildren().add(uiData);
+
+        FactoryFinder.setFactory(FactoryFinder.APPLICATION_FACTORY,
+          MockApplicationFactory.class.getName());
+
+        FactoryFinder.setFactory(FactoryFinder.RENDER_KIT_FACTORY,
+          MockRenderKitFactory.class.getName());
+
+        context.setViewRoot(viewRoot);
+
+        FacesContextHelper.setCurrentInstance(context);
+        return input;
+    }
+
+    /*
+    * Test method for 'javax.faces.component.UIComponentBase.getId()'
+    */
+    public void testGetId() {
+
+    }
+
   /*
    * Test method for 'javax.faces.component.UIComponentBase.setId(String)'
    */
@@ -157,6 +205,17 @@
    * Test method for 'javax.faces.component.UIComponentBase.findComponent(String)'
    */
   public void testFindComponentString() {
+      FacesContext context = new FacesContextHelper();
+
+      UIInput input = createInputInTree(context);
+
+      UIComponent comp = input.findComponent(":data:input");
+
+      assertEquals(input, comp);
+
+      comp = input.findComponent("input");
+
+      assertEquals(input, comp);
 
   }
 

Modified: myfaces/core/trunk/api/src/test/java/org/apache/myfaces/FacesContextHelper.java
URL: http://svn.apache.org/viewcvs/myfaces/core/trunk/api/src/test/java/org/apache/myfaces/FacesContextHelper.java?rev=371488&r1=371487&r2=371488&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/test/java/org/apache/myfaces/FacesContextHelper.java (original)
+++ myfaces/core/trunk/api/src/test/java/org/apache/myfaces/FacesContextHelper.java Mon Jan 23 00:16:37 2006
@@ -15,7 +15,17 @@
  */
 package org.apache.myfaces;
 
+import org.apache.myfaces.mock.MockExternalContext;
+
 import javax.faces.context.FacesContext;
+import javax.faces.context.ExternalContext;
+import javax.faces.context.ResponseStream;
+import javax.faces.context.ResponseWriter;
+import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
+import javax.faces.render.RenderKit;
+import javax.faces.component.UIViewRoot;
+import java.util.Iterator;
 
 /**
  * Simple test helper class to allow unit tests to configure
@@ -25,13 +35,126 @@
  * hence cannot be accessed by unit tests wanting to configure
  * a mock object as the value seen by code calling method
  * FacesContext.getCurrentInstance().
- * <p>
- * This class is abstract because an instance is not needed
- * in order to invoke the static helper method it provides.
  */
 
-public abstract class FacesContextHelper extends FacesContext
+public class FacesContextHelper extends FacesContext
 {
+    private Application application;
+    private ExternalContext externalContext;
+    private UIViewRoot viewRoot;
+
+    public Application getApplication()
+    {
+        return application;
+    }
+
+    public void setApplication(Application application)
+    {
+        this.application = application;
+    }
+
+    public ExternalContext getExternalContext()
+    {
+        if(externalContext==null)
+        {
+            externalContext = new MockExternalContext();
+        }
+
+        return externalContext;
+    }
+
+    public void setExternalContext(ExternalContext externalContext)
+    {
+        this.externalContext = externalContext;
+    }
+
+    public UIViewRoot getViewRoot()
+    {
+        return viewRoot;
+    }
+
+    public void setViewRoot(UIViewRoot viewRoot)
+    {
+        this.viewRoot = viewRoot;
+    }
+
+
+    public Iterator getClientIdsWithMessages()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+
+    public FacesMessage.Severity getMaximumSeverity()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Iterator getMessages()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Iterator getMessages(String clientId)
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public RenderKit getRenderKit()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public boolean getRenderResponse()
+    {
+        return false;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public boolean getResponseComplete()
+    {
+        return false;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public ResponseStream getResponseStream()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public void setResponseStream(ResponseStream responseStream)
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public ResponseWriter getResponseWriter()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public void setResponseWriter(ResponseWriter responseWriter)
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public void addMessage(String clientId, FacesMessage message)
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public void release()
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public void renderResponse()
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public void responseComplete()
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
     public static void setCurrentInstance(FacesContext other)
     {
         FacesContext.setCurrentInstance(other);

Added: myfaces/core/trunk/api/src/test/java/org/apache/myfaces/mock/MockExternalContext.java
URL: http://svn.apache.org/viewcvs/myfaces/core/trunk/api/src/test/java/org/apache/myfaces/mock/MockExternalContext.java?rev=371488&view=auto
==============================================================================
--- myfaces/core/trunk/api/src/test/java/org/apache/myfaces/mock/MockExternalContext.java (added)
+++ myfaces/core/trunk/api/src/test/java/org/apache/myfaces/mock/MockExternalContext.java Mon Jan 23 00:16:37 2006
@@ -0,0 +1,200 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.myfaces.mock;
+
+import javax.faces.context.ExternalContext;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Map;
+import java.util.Locale;
+import java.util.Iterator;
+import java.util.Set;
+import java.net.URL;
+import java.net.MalformedURLException;
+import java.security.Principal;
+
+public class MockExternalContext extends ExternalContext
+{
+    public void dispatch(String path) throws IOException
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public String encodeActionURL(String url)
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public String encodeNamespace(String name)
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public String encodeResourceURL(String url)
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Map getApplicationMap()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public String getAuthType()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Object getContext()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public String getInitParameter(String name)
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Map getInitParameterMap()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public String getRemoteUser()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Object getRequest()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public String getRequestContextPath()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Map getRequestCookieMap()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Map getRequestHeaderMap()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Map getRequestHeaderValuesMap()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Locale getRequestLocale()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Iterator getRequestLocales()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Map getRequestMap()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Map getRequestParameterMap()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Iterator getRequestParameterNames()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Map getRequestParameterValuesMap()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public String getRequestPathInfo()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public String getRequestServletPath()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public URL getResource(String path) throws MalformedURLException
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public InputStream getResourceAsStream(String path)
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Set getResourcePaths(String path)
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Object getResponse()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Object getSession(boolean create)
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Map getSessionMap()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public Principal getUserPrincipal()
+    {
+        return null;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public boolean isUserInRole(String role)
+    {
+        return false;  //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public void log(String message)
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public void log(String message, Throwable exception)
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+
+    public void redirect(String url) throws IOException
+    {
+        //To change body of implemented methods use File | Settings | File Templates.
+    }
+}