1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    *
5    *
6    *
7    * The contents of this file are subject to the terms of the Liferay Enterprise
8    * Subscription License ("License"). You may not use this file except in
9    * compliance with the License. You can obtain a copy of the License by
10   * contacting Liferay, Inc. See the License for the specific language governing
11   * permissions and limitations under the License, including but not limited to
12   * distribution rights of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portlet;
24  
25  import com.liferay.portal.model.PortletApp;
26  
27  import java.util.Map;
28  import java.util.concurrent.ConcurrentHashMap;
29  
30  import javax.portlet.PortletContext;
31  import javax.portlet.filter.FilterConfig;
32  
33  /**
34   * <a href="FilterConfigFactory.java.html"><b><i>View Source</i></b></a>
35   *
36   * @author Brian Wing Shun Chan
37   */
38  public class FilterConfigFactory {
39  
40      public static FilterConfig create(
41          com.liferay.portal.model.PortletFilter portletFilter,
42          PortletContext ctx) {
43  
44          return _instance._create(portletFilter, ctx);
45      }
46  
47      public static void destroy(
48          com.liferay.portal.model.PortletFilter portletFilter) {
49  
50          _instance._destroy(portletFilter);
51      }
52  
53      private FilterConfigFactory() {
54          _pool = new ConcurrentHashMap<String, Map<String, FilterConfig>>();
55      }
56  
57      private FilterConfig _create(
58          com.liferay.portal.model.PortletFilter portletFilter,
59          PortletContext ctx) {
60  
61          PortletApp portletApp = portletFilter.getPortletApp();
62  
63          Map<String, FilterConfig> filterConfigs =
64              _pool.get(portletApp.getServletContextName());
65  
66          if (filterConfigs == null) {
67              filterConfigs = new ConcurrentHashMap<String, FilterConfig>();
68  
69              _pool.put(portletApp.getServletContextName(), filterConfigs);
70          }
71  
72          FilterConfig filterConfig = filterConfigs.get(
73              portletFilter.getFilterName());
74  
75          if (filterConfig == null) {
76              filterConfig = new FilterConfigImpl(
77                  portletFilter.getFilterName(), ctx,
78                  portletFilter.getInitParams());
79  
80              filterConfigs.put(portletFilter.getFilterName(), filterConfig);
81          }
82  
83          return filterConfig;
84      }
85  
86      private void _destroy(
87          com.liferay.portal.model.PortletFilter portletFilter) {
88  
89          PortletApp portletApp = portletFilter.getPortletApp();
90  
91          _pool.remove(portletApp.getServletContextName());
92      }
93  
94      private static FilterConfigFactory _instance = new FilterConfigFactory();
95  
96      private Map<String, Map<String, FilterConfig>> _pool;
97  
98  }