View Javadoc

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 javax.faces.render;
20  
21  import javax.faces.application.StateManager;
22  import javax.faces.application.StateManager.SerializedView;
23  import javax.faces.context.FacesContext;
24  import java.io.IOException;
25  
26  /**
27   * see Javadoc of <a href="http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/index.html">JSF Specification</a>
28   *
29   * @author Manfred Geiler (latest modification by $Author: skitching $)
30   * @author Stan Silvert
31   * @version $Revision: 676298 $ $Date: 2008-07-13 05:31:48 -0500 (Sun, 13 Jul 2008) $
32   */
33  public abstract class ResponseStateManager
34  {
35      public static final String RENDER_KIT_ID_PARAM = "javax.faces.RenderKitId";
36      public static final String VIEW_STATE_PARAM = "javax.faces.ViewState";
37      
38      public void writeState(FacesContext context, Object state) throws IOException{
39          SerializedView view;
40          if (state instanceof SerializedView)
41          {
42              view = (SerializedView) state;
43          }
44          else
45              if (state instanceof Object[])
46              {
47                  Object[] structureAndState = (Object[]) state;
48  
49                  if (structureAndState.length == 2)
50                  {
51                      Object structureObj = structureAndState[0];
52                      Object stateObj = structureAndState[1];
53  
54                      StateManager stateManager = context.getApplication().getStateManager();
55                      view = stateManager.new SerializedView(structureObj, stateObj);
56                  }
57                  else
58                  {
59                      throw new IOException("The state should be an array of Object[] of lenght 2");
60                  }
61              }
62          else
63              {
64                  throw new IOException("The state should be an array of Object[] of lenght 2, or a SerializedView instance");
65              }
66  
67          writeState(context, view);
68      }
69      
70      /**
71       * @deprecated
72       */
73      public void writeState(FacesContext context,
74                             StateManager.SerializedView state)
75              throws IOException {
76          // does nothing as per JSF 1.2 javadoc
77      }
78  
79      /**
80       * @since 1.2
81       */
82      public Object getState(FacesContext context, String viewId) {
83          Object[] structureAndState = new Object[2];
84          structureAndState[0] = getTreeStructureToRestore(context, viewId);
85          structureAndState[1] = getComponentStateToRestore(context);
86          return structureAndState;
87      }
88      
89      
90      /**
91       * @deprecated
92       */
93      public Object getTreeStructureToRestore(FacesContext context,
94                                               String viewId) {
95          return null;
96      }
97      
98  
99      /**
100      * @deprecated
101      */
102     public Object getComponentStateToRestore(FacesContext context) {
103         return null;
104     }
105     
106     /**
107      * Checks if the current request is a postback
108      * @since 1.2
109      */
110     public boolean isPostback(FacesContext context) {
111       return context.getExternalContext().
112         getRequestParameterMap().containsKey(
113               ResponseStateManager.VIEW_STATE_PARAM);
114     }
115 
116 }