1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.myfaces.tobago.internal.lifecycle;
21
22 import javax.faces.FacesException;
23 import javax.faces.application.Application;
24 import javax.faces.application.ViewHandler;
25 import javax.faces.component.UIViewRoot;
26 import javax.faces.context.FacesContext;
27 import javax.faces.event.PhaseId;
28 import javax.servlet.http.HttpServletResponse;
29 import java.io.IOException;
30
31
32
33
34
35
36 class RenderResponseExecutor implements PhaseExecutor {
37
38 public boolean execute(FacesContext facesContext) {
39 Application application = facesContext.getApplication();
40 ViewHandler viewHandler = application.getViewHandler();
41
42 try {
43 final UIViewRoot viewRoot = facesContext.getViewRoot();
44 if (viewRoot.getViewId() != null) {
45 viewHandler.renderView(facesContext, viewRoot);
46 } else {
47 Object respObj = facesContext.getExternalContext().getResponse();
48 if (respObj instanceof HttpServletResponse) {
49 HttpServletResponse respHttp = (HttpServletResponse) respObj;
50 respHttp.sendError(HttpServletResponse.SC_NOT_FOUND);
51 facesContext.responseComplete();
52 }
53 }
54 } catch (IOException e) {
55 throw new FacesException(e.getMessage(), e);
56 }
57 return false;
58 }
59
60 public PhaseId getPhase() {
61 return PhaseId.RENDER_RESPONSE;
62 }
63 }