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 org.apache.myfaces.shared.resource;
20  
21  import java.util.regex.Pattern;
22  
23  import javax.faces.context.FacesContext;
24  import javax.faces.view.Location;
25  
26  /**
27   * Utility class when used in EL Expressions --> #{resource}
28   */
29  public class ResourceELUtils
30  {
31  
32      // TODO: check this expression, maybe we can make it simpler, because "resource" implicit object
33      // cannot be preceded by anything.
34      public static final Pattern RESOURCE_EXPRESSION_REGEX = Pattern.compile(".*[^\\w\\.]resource[^\\w].*");
35      
36      private static final String RESOURCE = "resource";
37      
38      public static final String RESOURCE_LOCATION_KEY = "org.apache.myfaces.view.facelets.resource.location";
39      
40      public static final String RESOURCE_THIS_LIBRARY = "oam.resource.library";
41      public static final String RESOURCE_THIS_CONTRACT = "oam.resource.contract";
42      
43      public static boolean isResourceExpression(String expression)
44      {
45          if (expression.contains(RESOURCE))
46          {
47              return RESOURCE_EXPRESSION_REGEX.matcher(expression).matches();
48          }
49          else
50          {
51              return false;
52          }
53      }
54  
55      public static Location getResourceLocationForResolver(FacesContext facesContext)
56      {
57          return (Location) facesContext.getAttributes().get(RESOURCE_LOCATION_KEY);
58      }
59      
60      public static void saveResourceLocationForResolver(FacesContext facesContext, Location location)
61      {
62          facesContext.getAttributes().put(RESOURCE_LOCATION_KEY, location);
63      }
64      
65      public static void removeResourceLocationForResolver(FacesContext facesContext)
66      {
67          facesContext.getAttributes().remove(RESOURCE_LOCATION_KEY);
68      }
69  
70      public static String getResourceContractForResolver(FacesContext facesContext)
71      {
72          return (String) facesContext.getAttributes().get(RESOURCE_THIS_CONTRACT);
73      }
74      
75      public static void saveResourceContractForResolver(FacesContext facesContext, String location)
76      {
77          facesContext.getAttributes().put(RESOURCE_THIS_CONTRACT, location);
78      }
79      
80      public static void removeResourceContractForResolver(FacesContext facesContext)
81      {
82          facesContext.getAttributes().remove(RESOURCE_THIS_CONTRACT);
83      }
84      
85      public static String getResourceLibraryForResolver(FacesContext facesContext)
86      {
87          return (String) facesContext.getAttributes().get(RESOURCE_THIS_LIBRARY);
88      }
89      
90      public static void saveResourceLibraryForResolver(FacesContext facesContext, String location)
91      {
92          facesContext.getAttributes().put(RESOURCE_THIS_LIBRARY, location);
93      }
94      
95      public static void removeResourceLibraryForResolver(FacesContext facesContext)
96      {
97          facesContext.getAttributes().remove(RESOURCE_THIS_LIBRARY);
98      }
99  }