Package org.apache.myfaces.lifecycle

Source Code of org.apache.myfaces.lifecycle.LifecycleImplCactus

/*
* 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 org.apache.myfaces.lifecycle;

import javax.faces.FactoryFinder;
import javax.faces.application.StateManager;
import javax.faces.application.ViewHandler;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
import javax.faces.context.FacesContextFactory;
import javax.faces.event.PhaseId;
import javax.faces.lifecycle.Lifecycle;
import javax.faces.lifecycle.LifecycleFactory;
import javax.faces.webapp.FacesServlet;

import org.apache.cactus.ServletTestCase;
import org.apache.cactus.WebRequest;

public class LifecycleImplCactus extends ServletTestCase
{
    private FacesServlet servlet;

    private FacesContext facesContext;

    private Lifecycle lifecycle;

    protected void setUp() throws Exception
    {
        super.setUp();
        servlet = new FacesServlet();
        servlet.init(this.config);
        LifecycleFactory lifecycleFactory = (LifecycleFactory) FactoryFinder
                                                                            .getFactory(FactoryFinder.LIFECYCLE_FACTORY);
        String lifecycleId = this.config.getServletContext().getInitParameter(FacesServlet.LIFECYCLE_ID_ATTR);
        lifecycleId = (lifecycleId != null ? lifecycleId : LifecycleFactory.DEFAULT_LIFECYCLE);
        lifecycle = lifecycleFactory.getLifecycle(lifecycleId);
        for (int i = 0; i < lifecycle.getPhaseListeners().length; i++)
        {
            if (lifecycle.getPhaseListeners()[i] instanceof InstrumentingPhaseListener)
            {
                lifecycle.removePhaseListener(lifecycle.getPhaseListeners()[i]);
            }
        }
        FacesContextFactory facesContextFactory = (FacesContextFactory) FactoryFinder
                                                                                     .getFactory(FactoryFinder.FACES_CONTEXT_FACTORY);
        facesContext = facesContextFactory.getFacesContext(this.config.getServletContext(), request, response,
            lifecycle);
    }

    protected void tearDown() throws Exception
    {
        super.tearDown();
    }

    /*
     * Test method for 'javax.faces.lifecycle.Lifecycle.addPhaseListener(PhaseListener)'
     */
    public void testAddPhaseListenerPhaseListener()
    {
    }

    public void beginExecuteRestoreViewRenderBefore(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteRestoreViewRenderBefore() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.RESTORE_VIEW);
        listener.setBefore(true);
        listener.setRender(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(2, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getBeforePhases().get(1));
        assertEquals(2, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getAfterPhases().get(1));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteRestoreViewRenderAfter(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteRestoreViewRenderAfter() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.RESTORE_VIEW);
        listener.setAfter(true);
        listener.setRender(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(2, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getBeforePhases().get(1));
        assertEquals(2, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getAfterPhases().get(1));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteRestoreViewCompleteBefore(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteRestoreViewCompleteBefore() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.RESTORE_VIEW);
        listener.setBefore(true);
        listener.setComplete(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(1, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(0, listener.getAfterPhases().size());
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteRestoreViewCompleteAfter(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteRestoreViewCompleteAfter() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.RESTORE_VIEW);
        listener.setAfter(true);
        listener.setBefore(false);
        listener.setComplete(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(1, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(1, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteApplyRequestValuesRenderBefore(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteApplyRequestValuesRenderBefore() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.APPLY_REQUEST_VALUES);
        listener.setBefore(true);
        listener.setRender(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(3, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getBeforePhases().get(2));
        assertEquals(3, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getAfterPhases().get(1));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getAfterPhases().get(2));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteApplyRequestValuesRenderAfter(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteApplyRequestValuesRenderAfter() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.APPLY_REQUEST_VALUES);
        listener.setAfter(true);
        listener.setRender(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(3, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getBeforePhases().get(2));
        assertEquals(3, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getAfterPhases().get(1));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getAfterPhases().get(2));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteApplyRequestValuesCompleteBefore(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteApplyRequestValuesCompleteBefore() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.APPLY_REQUEST_VALUES);
        listener.setBefore(true);
        listener.setComplete(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(2, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(1, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteApplyRequestValuesCompleteAfter(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteApplyRequestValuesCompleteAfter() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.APPLY_REQUEST_VALUES);
        listener.setAfter(true);
        listener.setBefore(false);
        listener.setComplete(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(2, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(2, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getAfterPhases().get(1));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteProcessValidationsRenderBefore(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteProcessValidationsRenderBefore() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.PROCESS_VALIDATIONS);
        listener.setBefore(true);
        listener.setRender(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(4, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getBeforePhases().get(2));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getBeforePhases().get(3));
        assertEquals(4, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getAfterPhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getAfterPhases().get(2));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getAfterPhases().get(3));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteProcessValidationsRenderAfter(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteProcessValidationsRenderAfter() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.PROCESS_VALIDATIONS);
        listener.setAfter(true);
        listener.setRender(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(4, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getBeforePhases().get(2));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getBeforePhases().get(3));
        assertEquals(4, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getAfterPhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getAfterPhases().get(2));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getAfterPhases().get(3));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteProcessValidationsCompleteBefore(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteProcessValidationsCompleteBefore() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.PROCESS_VALIDATIONS);
        listener.setBefore(true);
        listener.setComplete(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(3, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getBeforePhases().get(2));
        assertEquals(2, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getAfterPhases().get(1));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteProcessValidationsCompleteAfter(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteProcessValidationsCompleteAfter() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we would go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.PROCESS_VALIDATIONS);
        listener.setAfter(true);
        listener.setBefore(false);
        listener.setComplete(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        assertEquals(3, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getBeforePhases().get(2));
        assertEquals(3, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getAfterPhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getAfterPhases().get(2));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteUpdateModelValuesRenderBefore(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteUpdateModelValuesRenderBefore() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we will go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.UPDATE_MODEL_VALUES);
        listener.setBefore(true);
        listener.setAfter(false);
        listener.setRender(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        // assert the phases were hit
        assertEquals(5, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getBeforePhases().get(2));
        assertEquals(PhaseId.UPDATE_MODEL_VALUES, listener.getBeforePhases().get(3));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getBeforePhases().get(4));
        assertEquals(5, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getAfterPhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getAfterPhases().get(2));
        assertEquals(PhaseId.UPDATE_MODEL_VALUES, listener.getAfterPhases().get(3));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getAfterPhases().get(4));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteUpdateModelValuesRenderAfter(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteUpdateModelValuesRenderAfter() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we will go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.UPDATE_MODEL_VALUES);
        listener.setBefore(false);
        listener.setAfter(true);
        listener.setRender(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        // assert the phases were hit
        assertEquals(5, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getBeforePhases().get(2));
        assertEquals(PhaseId.UPDATE_MODEL_VALUES, listener.getBeforePhases().get(3));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getBeforePhases().get(4));
        assertEquals(5, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getAfterPhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getAfterPhases().get(2));
        assertEquals(PhaseId.UPDATE_MODEL_VALUES, listener.getAfterPhases().get(3));
        assertEquals(PhaseId.RENDER_RESPONSE, listener.getAfterPhases().get(4));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteUpdateModelValuesCompleteBefore(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteUpdateModelValuesCompleteBefore() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we will go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.UPDATE_MODEL_VALUES);
        listener.setBefore(true);
        listener.setAfter(false);
        listener.setComplete(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        // assert the phases were hit
        assertEquals(4, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getBeforePhases().get(2));
        assertEquals(PhaseId.UPDATE_MODEL_VALUES, listener.getBeforePhases().get(3));
        assertEquals(3, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getAfterPhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getAfterPhases().get(2));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteUpdateModelValuesCompleteAfter(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteUpdateModelValuesCompleteAfter() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we will go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.UPDATE_MODEL_VALUES);
        listener.setBefore(false);
        listener.setAfter(true);
        listener.setComplete(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        // assert the phases were hit
        assertEquals(4, listener.getBeforePhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getBeforePhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getBeforePhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getBeforePhases().get(2));
        assertEquals(PhaseId.UPDATE_MODEL_VALUES, listener.getBeforePhases().get(3));
        assertEquals(4, listener.getAfterPhases().size());
        assertEquals(PhaseId.RESTORE_VIEW, listener.getAfterPhases().get(0));
        assertEquals(PhaseId.APPLY_REQUEST_VALUES, listener.getAfterPhases().get(1));
        assertEquals(PhaseId.PROCESS_VALIDATIONS, listener.getAfterPhases().get(2));
        assertEquals(PhaseId.UPDATE_MODEL_VALUES, listener.getAfterPhases().get(3));
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteInvokeApplicationRenderBefore(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteInvokeApplicationRenderBefore() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we will go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.INVOKE_APPLICATION);
        listener.setBefore(true);
        listener.setAfter(false);
        listener.setRender(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        // assert the phases were hit
        assertEquals(6, listener.getBeforePhases().size());
        assertEquals(6, listener.getAfterPhases().size());
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteInvokeApplicationRenderAfter(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteInvokeApplicationRenderAfter() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we will go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.INVOKE_APPLICATION);
        listener.setBefore(false);
        listener.setAfter(true);
        listener.setRender(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        // assert the phases were hit
        assertEquals(6, listener.getBeforePhases().size());
        assertEquals(6, listener.getAfterPhases().size());
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteInvokeApplicationCompleteBefore(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteInvokeApplicationCompleteBefore() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we will go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.INVOKE_APPLICATION);
        listener.setBefore(true);
        listener.setAfter(false);
        listener.setComplete(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        // assert the phases were hit
        assertEquals(5, listener.getBeforePhases().size());
        assertEquals(4, listener.getAfterPhases().size());
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecuteInvokeApplicationCompleteAfter(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecuteInvokeApplicationCompleteAfter() throws Exception
    {
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we will go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        listener.setEventPhaseId(PhaseId.INVOKE_APPLICATION);
        listener.setBefore(false);
        listener.setAfter(true);
        listener.setComplete(true);
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        // assert the phases were hit
        assertEquals(5, listener.getBeforePhases().size());
        assertEquals(5, listener.getAfterPhases().size());
        lifecycle.removePhaseListener(listener);
    }

    public void beginExecute(WebRequest request)
    {
        request.addParameter("foo", "bar");
        request.setURL("localhost:8080", "/test-app", "/faces", "/index.jsp", null);
    }

    public void testExecute() throws Exception
    {
        // set the view root
        setViewRoot("/index.jsp");
        // simulate that this is the 2nd request for this page
        // so that we will go through all 6 phases
        StateManager stateManager = facesContext.getApplication().getStateManager();
        stateManager.saveSerializedView(facesContext);
        InstrumentingPhaseListener listener = new InstrumentingPhaseListener();
        lifecycle.addPhaseListener(listener);
        servlet.service(this.request, this.response);
        // assert the phases were hit
        assertEquals(6, listener.getBeforePhases().size());
        assertEquals(6, listener.getAfterPhases().size());
        lifecycle.removePhaseListener(listener);
    }

    /*
     * Test method for 'javax.faces.lifecycle.Lifecycle.getPhaseListeners()'
     */
    public void testGetPhaseListeners()
    {

    }

    /*
     * Test method for 'javax.faces.lifecycle.Lifecycle.removePhaseListener(PhaseListener)'
     */
    public void testRemovePhaseListenerPhaseListener()
    {

    }

    /*
     * Test method for 'javax.faces.lifecycle.Lifecycle.render(FacesContext)'
     */
    public void testRenderFacesContext()
    {

    }

    private void setViewRoot(String viewId)
    {
        ViewHandler viewHandler = facesContext.getApplication().getViewHandler();
        UIViewRoot viewRoot = viewHandler.createView(facesContext, viewId);
        viewRoot.setViewId(viewId);
        facesContext.setViewRoot(viewRoot);
    }

}
TOP

Related Classes of org.apache.myfaces.lifecycle.LifecycleImplCactus

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.