jsf lifecycle updates

This commit is contained in:
Keith Donald
2008-04-22 19:35:41 +00:00
parent 199aebbd9e
commit 6c635c448a
5 changed files with 37 additions and 29 deletions

View File

@@ -67,5 +67,6 @@ public class FlowActionListener implements ActionListener {
logger.debug("No action event detected");
context.getExternalContext().getRequestMap().remove(JsfView.EVENT_KEY);
}
context.renderResponse();
}
}

View File

@@ -50,12 +50,12 @@ public class FlowFacesContext extends FacesContext {
/**
* The key for storing the responseComplete flag
*/
static final String RESPONSE_COMPLETE_KEY = "webFlowResponseComplete";
static final String RESPONSE_COMPLETE_KEY = "flowResponseComplete";
/**
* The key for storing the renderResponse flag
*/
static final String RENDER_RESPONSE_KEY = "webFlowRenderResponse";
static final String RENDER_RESPONSE_KEY = "flowRenderResponse";
/**
* The key for storing the renderResponse flag
@@ -151,7 +151,7 @@ public class FlowFacesContext extends FacesContext {
}
public boolean getRenderResponse() {
Boolean renderResponse = context.getRequestScope().getBoolean(RENDER_RESPONSE_KEY);
Boolean renderResponse = context.getFlashScope().getBoolean(RENDER_RESPONSE_KEY);
if (renderResponse == null) {
return false;
}
@@ -159,7 +159,7 @@ public class FlowFacesContext extends FacesContext {
}
public boolean getResponseComplete() {
Boolean responseComplete = context.getRequestScope().getBoolean(RESPONSE_COMPLETE_KEY);
Boolean responseComplete = context.getFlashScope().getBoolean(RESPONSE_COMPLETE_KEY);
if (responseComplete == null) {
return false;
}
@@ -167,11 +167,11 @@ public class FlowFacesContext extends FacesContext {
}
public void renderResponse() {
context.getRequestScope().put(RENDER_RESPONSE_KEY, Boolean.TRUE);
context.getFlashScope().put(RENDER_RESPONSE_KEY, Boolean.TRUE);
}
public void responseComplete() {
context.getRequestScope().put(RESPONSE_COMPLETE_KEY, Boolean.TRUE);
context.getFlashScope().put(RESPONSE_COMPLETE_KEY, Boolean.TRUE);
}
// ------------------ Pass-through delegate methods ----------------------//

View File

@@ -67,7 +67,9 @@ public class JsfViewFactory implements ViewFactory {
public View getView(RequestContext context) {
FacesContext facesContext = FlowFacesContext.newInstance(context, lifecycle);
try {
JsfUtils.notifyBeforeListeners(PhaseId.RESTORE_VIEW, lifecycle, facesContext);
if (!facesContext.getRenderResponse()) {
JsfUtils.notifyBeforeListeners(PhaseId.RESTORE_VIEW, lifecycle, facesContext);
}
ViewHandler viewHandler = facesContext.getApplication().getViewHandler();
if (JsfUtils.isAtLeastJsf12() && !JsfUtils.isPortlet(facesContext)) {
viewHandler.initView(facesContext);
@@ -78,6 +80,9 @@ public class JsfViewFactory implements ViewFactory {
if (logger.isDebugEnabled()) {
logger.debug("Existing view root found with id '" + facesContext.getViewRoot().getId() + "'");
}
UIViewRoot viewRoot = facesContext.getViewRoot();
viewRoot.setLocale(context.getExternalContext().getLocale());
processComponentBinding(facesContext, viewRoot);
view = createJsfView(facesContext.getViewRoot(), lifecycle, context);
view.setRestored(true);
} else {
@@ -99,7 +104,9 @@ public class JsfViewFactory implements ViewFactory {
view.setRestored(true);
}
}
JsfUtils.notifyAfterListeners(PhaseId.RESTORE_VIEW, lifecycle, facesContext);
if (!facesContext.getRenderResponse()) {
JsfUtils.notifyAfterListeners(PhaseId.RESTORE_VIEW, lifecycle, facesContext);
}
return view;
} finally {
facesContext.release();

View File

@@ -79,7 +79,7 @@ public class JsfFinalResponseActionTests extends TestCase {
ext.setNativeResponse(new MockHttpServletResponse());
EasyMock.expect(context.getExternalContext()).andStubReturn(ext);
AttributeMap requestMap = new LocalAttributeMap();
EasyMock.expect(context.getRequestScope()).andStubReturn(requestMap);
EasyMock.expect(context.getFlashScope()).andStubReturn(requestMap);
EasyMock.expect(context.getRequestParameters()).andStubReturn(new LocalParameterMap(new HashMap()));
}

View File

@@ -49,7 +49,7 @@ public class JsfViewTests extends TestCase {
private RequestContext context = (RequestContext) EasyMock.createMock(RequestContext.class);
private FlowExecutionContext flowExecutionContext = (FlowExecutionContext) EasyMock
.createMock(FlowExecutionContext.class);
private MutableAttributeMap requestMap = (MutableAttributeMap) EasyMock.createMock(MutableAttributeMap.class);
private MutableAttributeMap flashScope = (MutableAttributeMap) EasyMock.createMock(MutableAttributeMap.class);
private MutableAttributeMap flowMap = (MutableAttributeMap) EasyMock.createMock(MutableAttributeMap.class);
private FlowExecutionKey key = new FlowExecutionKey() {
@@ -90,7 +90,7 @@ public class JsfViewTests extends TestCase {
RequestContextHolder.setRequestContext(context);
EasyMock.expect(context.getExternalContext()).andStubReturn(extContext);
EasyMock.expect(context.getRequestScope()).andStubReturn(requestMap);
EasyMock.expect(context.getFlashScope()).andStubReturn(flashScope);
EasyMock.expect(context.getFlowScope()).andStubReturn(flowMap);
EasyMock.expect(context.getFlowExecutionContext()).andStubReturn(flowExecutionContext);
EasyMock.expect(flowExecutionContext.getKey()).andStubReturn(key);
@@ -104,12 +104,12 @@ public class JsfViewTests extends TestCase {
public final void testRender() throws IOException {
EasyMock.expect(requestMap.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject()))
EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject()))
.andStubReturn(null);
EasyMock.expect(requestMap.put(EasyMock.matches(FlowFacesContext.RESPONSE_COMPLETE_KEY), EasyMock.anyObject()))
EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RESPONSE_COMPLETE_KEY), EasyMock.anyObject()))
.andStubReturn(null);
EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, requestMap });
EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope });
view.render();
@@ -118,12 +118,12 @@ public class JsfViewTests extends TestCase {
public final void testRenderException() throws IOException {
EasyMock.expect(requestMap.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject()))
EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject()))
.andStubReturn(null);
EasyMock.expect(requestMap.put(EasyMock.matches(FlowFacesContext.RESPONSE_COMPLETE_KEY), EasyMock.anyObject()))
EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RESPONSE_COMPLETE_KEY), EasyMock.anyObject()))
.andStubReturn(null);
EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, requestMap });
EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope });
jsfMock.application().setViewHandler(new ExceptionalViewHandler());
@@ -139,11 +139,11 @@ public class JsfViewTests extends TestCase {
*/
public final void testResume_Restored_NoEvent() {
EasyMock.expect(requestMap.getBoolean(EasyMock.matches(FlowFacesContext.RESPONSE_COMPLETE_KEY))).andStubReturn(
EasyMock.expect(flashScope.getBoolean(EasyMock.matches(FlowFacesContext.RESPONSE_COMPLETE_KEY))).andStubReturn(
Boolean.FALSE);
EasyMock.expect(requestMap.getBoolean(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY))).andStubReturn(
EasyMock.expect(flashScope.getBoolean(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY))).andStubReturn(
Boolean.FALSE);
EasyMock.expect(requestMap.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject()))
EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject()))
.andStubReturn(null);
EasyMock.expect(context.getCurrentState()).andStubReturn(new MockViewState());
@@ -152,7 +152,7 @@ public class JsfViewTests extends TestCase {
UIViewRoot existingRoot = new UIViewRoot();
existingRoot.setViewId(VIEW_ID);
EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, requestMap });
EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope });
JsfView restoredView = new JsfView(existingRoot, lifecycle, context);
restoredView.setRestored(true);
@@ -169,11 +169,11 @@ public class JsfViewTests extends TestCase {
*/
public final void testGetView_Restore_Ajax_NoEvent() {
EasyMock.expect(requestMap.getBoolean(EasyMock.matches(FlowFacesContext.RESPONSE_COMPLETE_KEY))).andStubReturn(
EasyMock.expect(flashScope.getBoolean(EasyMock.matches(FlowFacesContext.RESPONSE_COMPLETE_KEY))).andStubReturn(
Boolean.FALSE);
EasyMock.expect(requestMap.getBoolean(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY))).andStubReturn(
EasyMock.expect(flashScope.getBoolean(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY))).andStubReturn(
Boolean.FALSE);
EasyMock.expect(requestMap.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject()))
EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject()))
.andStubReturn(null);
EasyMock.expect(context.getCurrentState()).andStubReturn(new MockViewState());
@@ -183,7 +183,7 @@ public class JsfViewTests extends TestCase {
existingRoot.setViewId(VIEW_ID);
AjaxViewRoot ajaxRoot = new AjaxViewRoot(existingRoot);
EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, requestMap });
EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope });
JsfView restoredView = new JsfView(ajaxRoot, lifecycle, context);
restoredView.setRestored(true);
@@ -199,11 +199,11 @@ public class JsfViewTests extends TestCase {
*/
public final void testGetView_Restore_EventSignaled() {
EasyMock.expect(requestMap.getBoolean(EasyMock.matches(FlowFacesContext.RESPONSE_COMPLETE_KEY))).andStubReturn(
EasyMock.expect(flashScope.getBoolean(EasyMock.matches(FlowFacesContext.RESPONSE_COMPLETE_KEY))).andStubReturn(
Boolean.FALSE);
EasyMock.expect(requestMap.getBoolean(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY))).andStubReturn(
EasyMock.expect(flashScope.getBoolean(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY))).andStubReturn(
Boolean.FALSE);
EasyMock.expect(requestMap.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject()))
EasyMock.expect(flashScope.put(EasyMock.matches(FlowFacesContext.RENDER_RESPONSE_KEY), EasyMock.anyObject()))
.andStubReturn(null);
EasyMock.expect(context.getCurrentState()).andStubReturn(new MockViewState());
@@ -212,7 +212,7 @@ public class JsfViewTests extends TestCase {
UIViewRoot existingRoot = new UIViewRoot();
existingRoot.setViewId(VIEW_ID);
EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, requestMap });
EasyMock.replay(new Object[] { context, flowExecutionContext, flowMap, flashScope });
JsfView restoredView = new JsfView(existingRoot, lifecycle, context);
restoredView.setRestored(true);