/* * 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); } }