1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
9 *
10 * http://www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing,
13 * software distributed under the License is distributed on an
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 * KIND, either express or implied. See the License for the
16 * specific language governing permissions and limitations
17 * under the License.
18 */
19 package org.apache.myfaces.lifecycle;
20
21 import javax.faces.FacesException;
22 import javax.faces.component.UIComponent;
23 import javax.faces.context.ExternalContext;
24 import javax.faces.context.FacesContext;
25
26 /**
27 * Support class for restore view phase
28 *
29 * @author Mathias Broekelmann (latest modification by $Author: lu4242 $)
30 * @version $Revision: 887436 $ $Date: 2009-12-04 18:11:25 -0500 (Fri, 04 Dec 2009) $
31 */
32 public interface RestoreViewSupport
33 {
34 /**
35 * <p>
36 * Calculates the view id from the given faces context by the following algorithm
37 * </p>
38 * <ul>
39 * <li>lookup the viewid from the request attribute "javax.servlet.include.path_info"
40 * <li>if null lookup the value for viewid by {@link ExternalContext#getRequestPathInfo()}
41 * <li>if null lookup the value for viewid from the request attribute "javax.servlet.include.servlet_path"
42 * <li>if null lookup the value for viewid by {@link ExternalContext#getRequestServletPath()}
43 * <li>if null throw a {@link FacesException}
44 * </ul>
45 */
46 String calculateViewId(FacesContext facesContext);
47
48 /**
49 * Derive a view id retrieved from calling calculateViewId(FacesContext), but
50 * do not check if a resource with this name exists. This method is useful
51 * to retrieve a VDL instance, but note there are some cases (TCK test) where
52 * it is expected in Restore View algorithm a null or dummy viewId is passed.
53 *
54 * @param context
55 * @param viewId
56 * @return
57 */
58 String deriveViewId(FacesContext context, String viewId);
59
60 /**
61 * Processes the component tree. For each component (including the given one) in the tree determine if a value
62 * expression for the attribute "binding" is defined. If the expression is not null set the component instance to
63 * the value of this expression
64 *
65 * @param facesContext
66 * @param component
67 * the root component
68 */
69 void processComponentBinding(FacesContext facesContext, UIComponent component);
70
71 /**
72 * <p>
73 * Determine if the current request is a post back by the following algorithm.
74 * </p>
75 * <p>
76 * Find the render-kit-id for the current request by calling calculateRenderKitId() on the Application’s
77 * ViewHandler. Get that RenderKit’s ResponseStateManager and call its isPostback() method, passing the given
78 * FacesContext.
79 * </p>
80 *
81 * @param facesContext
82 * @return
83 */
84 boolean isPostback(FacesContext facesContext);
85 }