01: package org.gridsphere.services.core.filter.impl.descriptor;
02:
03: import org.apache.commons.logging.Log;
04: import org.apache.commons.logging.LogFactory;
05: import org.gridsphere.portletcontainer.impl.JavaXMLBindingFactory;
06: import org.gridsphere.services.core.filter.PortalFilter;
07: import org.gridsphere.services.core.filter.PortalFilterConfig;
08: import org.gridsphere.services.core.filter.impl.PortalFilterConfigImpl;
09: import org.gridsphere.services.core.persistence.PersistenceManagerException;
10: import org.gridsphere.services.core.persistence.PersistenceManagerXml;
11:
12: import java.net.URL;
13: import java.util.ArrayList;
14: import java.util.List;
15:
16: /**
17: * @author <a href="mailto:novotny@gridsphere.org">Jason Novotny</a>
18: * @version $Id: PortalFilterDescriptor.java 6407 2008-01-16 15:20:21Z wehrens $
19: */
20: public class PortalFilterDescriptor {
21:
22: private Log log = LogFactory.getLog(PortalFilterDescriptor.class);
23: private List<PortalFilter> portalFilters = new ArrayList<PortalFilter>();
24: private URL FILTER_MAPPING_PATH = getClass().getResource(
25: "/org/gridsphere/filters/portal-filters-mapping.xml");
26:
27: /**
28: * Constructor disallows non-argument instantiation
29: */
30: private PortalFilterDescriptor() {
31: }
32:
33: public PortalFilterDescriptor(String descriptorFile)
34: throws PersistenceManagerException {
35: PersistenceManagerXml pmXML = JavaXMLBindingFactory
36: .createPersistenceManagerXml(descriptorFile,
37: FILTER_MAPPING_PATH);
38: PortalFilterCollection portalFilterCollection = (PortalFilterCollection) pmXML
39: .load();
40: List<PortalFilterDefinition> portalFilterList = portalFilterCollection
41: .getPortalFilterList();
42: for (PortalFilterDefinition def : portalFilterList) {
43: String filterImpl = def.getImplementation();
44: try {
45: PortalFilter filterClass = (PortalFilter) Class
46: .forName(filterImpl).newInstance();
47: PortalFilterConfig filterConfig = new PortalFilterConfigImpl(
48: def.getConfigProperties());
49: filterClass.init(filterConfig);
50: portalFilters.add(filterClass);
51: } catch (ClassNotFoundException e) {
52: log.error("Unable to find filter class: " + filterImpl,
53: e);
54: } catch (InstantiationException e) {
55: log.error("Unable to instantiate filter class: "
56: + filterImpl, e);
57: } catch (IllegalAccessException e) {
58: log.error("Illegal access on filter class: "
59: + filterImpl, e);
60: }
61: }
62: }
63:
64: public List<PortalFilter> getPortalFilters() {
65: return portalFilters;
66: }
67:
68: }
|