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.application;
20  
21  import java.io.IOException;
22  
23  import javax.faces.context.FacesContext;
24  
25  import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
26  
27  /**
28   * @since 2.0
29   */
30  public abstract class ResourceHandler
31  {
32      public static final String LOCALE_PREFIX = "javax.faces.resource.localePrefix";
33      public static final String RESOURCE_EXCLUDES_DEFAULT_VALUE = ".class .jsp .jspx .properties .xhtml .groovy";
34      
35      /**
36       * Space separated file extensions that will not be served by the default ResourceHandler implementation.
37       */
38      @JSFWebConfigParam(defaultValue=".class .jsp .jspx .properties .xhtml .groovy",since="2.0", group="resources")
39      public static final String RESOURCE_EXCLUDES_PARAM_NAME = "javax.faces.RESOURCE_EXCLUDES";
40      public static final String RESOURCE_IDENTIFIER = "/javax.faces.resource";
41      
42      /**
43       * @since 2.2
44       */
45      public static final String RESOURCE_CONTRACT_XML = "javax.faces.contract.xml";
46      
47      /**
48       * @since 2.2
49       */
50      public static final String WEBAPP_CONTRACTS_DIRECTORY_PARAM_NAME = "javax.faces.WEBAPP_CONTRACTS_DIRECTORY";
51  
52      /**
53       * @since 2.2
54       */
55      public static final String WEBAPP_RESOURCES_DIRECTORY_PARAM_NAME = "javax.faces.WEBAPP_RESOURCES_DIRECTORY";
56       
57      public abstract Resource createResource(String resourceName);
58      
59      public abstract Resource createResource(String resourceName, String libraryName);
60      
61      public abstract Resource createResource(String resourceName, String libraryName, String contentType);
62      
63      public abstract String getRendererTypeForResourceName(String resourceName);
64      
65      public abstract void handleResourceRequest(FacesContext context) throws IOException;
66      
67      public abstract boolean isResourceRequest(FacesContext context);
68      
69      public abstract  boolean libraryExists(String libraryName);
70      
71      /**
72       * @since 2.2
73       * @param resourceId
74       * @return 
75       */
76      public Resource createResourceFromId(String resourceId)
77      {
78          return null;
79      }
80      
81      /**
82       * 
83       * @since 2.2
84       * @param context
85       * @param resourceName
86       * @return 
87       */
88      public ViewResource createViewResource(FacesContext context,
89                                         String resourceName)
90      {
91          return context.getApplication().getResourceHandler().createResource(resourceName);
92      }
93      
94      public boolean isResourceURL(java.lang.String url)
95      {
96          if (url == null)
97          {
98              throw new NullPointerException();
99          }
100         return url.contains(RESOURCE_IDENTIFIER);
101     }
102 }