/* =============================================================================== * * Part of the InfoGlue Content Management Platform (www.infoglue.org) * * =============================================================================== * * Copyright (C) * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 2, as published by the * Free Software Foundation. See the file LICENSE.html for more information. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc. / 59 Temple * Place, Suite 330 / Boston, MA 02111-1307 / USA. * * =============================================================================== */ package org.infoglue.cms.services; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import javax.servlet.Filter; import org.apache.log4j.Logger; import org.infoglue.deliver.applications.filters.Pattern; /** * This service supplies a lookup/registry service for filter plugins. */ public class ExtensionFilterService { private static final long serialVersionUID = 1L; private Map<Pattern,Filter> filters = new LinkedHashMap<Pattern,Filter>(); private static ExtensionFilterService service = null; public ExtensionFilterService() { } public static ExtensionFilterService getService() { if(service == null) service = new ExtensionFilterService(); return service; } public void clearFilters() { this.filters.clear(); } public void unregisterFilter(String filterClassName) { Iterator<Filter> filtersIterator = this.filters.values().iterator(); while(filtersIterator.hasNext()) { Filter filter = filtersIterator.next(); if(filter.getClass().getName().equalsIgnoreCase(filterClassName)) filtersIterator.remove(); } } public void registerFilter(Pattern pattern, Filter filter) { this.filters.put(pattern, filter); } public Map<Pattern,Filter> getFilters() { return filters; } }