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.view;
20  
21  import java.beans.BeanInfo;
22  import java.io.IOException;
23  import java.net.MalformedURLException;
24  import java.util.List;
25  import java.util.Map;
26  import java.util.logging.Level;
27  import java.util.logging.Logger;
28  
29  import javax.faces.application.Resource;
30  import javax.faces.component.UIComponent;
31  import javax.faces.component.UIViewRoot;
32  import javax.faces.context.FacesContext;
33  
34  /**
35   * @since 2.0
36   */
37  public abstract class ViewDeclarationLanguage
38  {
39      /**
40       * @since 2.1
41       */
42      public static final String JSP_VIEW_DECLARATION_LANGUAGE_ID = "java.faces.JSP";
43  
44      /**
45       * @since 2.1
46       */
47      public static final String FACELETS_VIEW_DECLARATION_LANGUAGE_ID = "java.faces.Facelets";
48      
49      public abstract void buildView(FacesContext context, UIViewRoot view) throws IOException;
50  
51      public abstract UIViewRoot createView(FacesContext context, String viewId);
52  
53      public abstract BeanInfo getComponentMetadata(FacesContext context, Resource componentResource);
54  
55      public abstract Resource getScriptComponentResource(FacesContext context, Resource componentResource);
56      
57      public abstract StateManagementStrategy getStateManagementStrategy(FacesContext context, String viewId); 
58  
59      public abstract ViewMetadata getViewMetadata(FacesContext context, String viewId);
60  
61      public abstract void renderView(FacesContext context, UIViewRoot view) throws IOException;
62  
63      public abstract UIViewRoot restoreView(FacesContext context, String viewId);
64      
65      public void retargetAttachedObjects(FacesContext context, UIComponent topLevelComponent,
66                                          List<AttachedObjectHandler> handlers)
67      {
68          throw new UnsupportedOperationException(); 
69      }
70  
71      public void retargetMethodExpressions(FacesContext context, UIComponent topLevelComponent)
72      {
73          throw new UnsupportedOperationException(); 
74      }
75      
76      /**
77       * 
78       * @since 2.1
79       * @return
80       */
81      public String getId()
82      {
83          return this.getClass().getName();
84      }
85      
86      /**
87       * 
88       * @since 2.1
89       * @param facesContext
90       * @param viewId
91       * @return
92       */
93      public boolean viewExists(FacesContext facesContext, String viewId)
94      {
95          try
96          {
97              return facesContext.getExternalContext().getResource(viewId) != null;
98          }
99          catch (MalformedURLException e)
100         {
101             Logger log = Logger.getLogger(ViewDeclarationLanguage.class.getName());
102             if (log.isLoggable(Level.SEVERE))
103             {
104                 log.log(Level.SEVERE, "Malformed URL viewId: "+viewId, e);
105             }
106         }
107         return false;
108     }
109     
110     /**
111      * @since 2.2
112      * @param context
113      * @param taglibURI
114      * @param tagName
115      * @param attributes
116      * @return 
117      */
118     public UIComponent createComponent(FacesContext context,
119                                    String taglibURI,
120                                    String tagName,
121                                    Map<String,Object> attributes)
122     {
123         return null;
124     }
125     
126     /**
127      * @since 2.2
128      * @param context
129      * @param viewId
130      * @return 
131      */
132     public List<String> calculateResourceLibraryContracts(FacesContext context,
133                                                       String viewId)
134     {
135         return null;
136     }
137 }