1 | package org.apache.pluto.driver.services.impl.resource; |
2 | |
3 | import java.io.IOException; |
4 | import java.io.InputStream; |
5 | |
6 | import org.apache.commons.digester.Digester; |
7 | import org.apache.commons.logging.Log; |
8 | import org.apache.commons.logging.LogFactory; |
9 | import org.apache.pluto.driver.services.portal.OneStartPageConfig; |
10 | import org.apache.pluto.driver.services.portal.OneStartRenderConfig; |
11 | import org.apache.pluto.driver.services.portal.OneStartSubtab; |
12 | import org.apache.pluto.driver.services.portal.PortletApplicationConfig; |
13 | import org.apache.pluto.driver.services.portal.PortletWindowConfig; |
14 | import org.xml.sax.SAXException; |
15 | |
16 | import edu.iu.uis.sit.portal.portlet.attribute.PortletAttribute; |
17 | |
18 | public class OneStartResourceConfigReader { |
19 | |
20 | private static final Log LOG = LogFactory.getLog(OneStartResourceConfigReader.class); |
21 | |
22 | public static final String CONFIG_FILE = "/WEB-INF/pluto-portal-driver-config.xml"; |
23 | |
24 | private static OneStartResourceConfigReader factory; |
25 | |
26 | public static OneStartResourceConfigReader getFactory() { |
27 | if (factory == null) { |
28 | factory = new OneStartResourceConfigReader(); |
29 | } |
30 | return factory; |
31 | } |
32 | |
33 | private Digester digester; |
34 | |
35 | private ResourceConfig resourceConfig; |
36 | |
37 | private OneStartResourceConfigReader() { |
38 | digester = new Digester(); |
39 | // digester.setLogger(LOG); // Too many log messages. |
40 | digester.setClassLoader(Thread.currentThread().getContextClassLoader()); |
41 | init(); |
42 | } |
43 | |
44 | public synchronized ResourceConfig parse(InputStream in) throws IOException, SAXException { |
45 | if (resourceConfig == null) { |
46 | resourceConfig = (ResourceConfig) digester.parse(in); |
47 | } |
48 | return resourceConfig; |
49 | } |
50 | |
51 | public synchronized ResourceConfig reparse(InputStream in) throws IOException, SAXException { |
52 | resourceConfig = (ResourceConfig) digester.parse(in); |
53 | return resourceConfig; |
54 | } |
55 | |
56 | public ResourceConfig getResourceConfig() { |
57 | return resourceConfig; |
58 | } |
59 | |
60 | private void init() { |
61 | if (LOG.isDebugEnabled()) { |
62 | LOG.debug("Setting up digester..."); |
63 | } |
64 | digester.addObjectCreate("pluto-portal-driver", ResourceConfig.class); |
65 | // digester.addBeanPropertySetter("pluto-portal-driver/portal-name", "portalName"); |
66 | // digester.addBeanPropertySetter("pluto-portal-driver/portal-version", "portalVersion"); |
67 | // digester.addBeanPropertySetter("pluto-portal-driver/container-name", "containerName"); |
68 | |
69 | // digester.addCallMethod("pluto-portal-driver/supports/portlet-mode", "addSupportedPortletMode", 0); |
70 | // digester.addCallMethod("pluto-portal-driver/supports/window-state", "addSupportedWindowState", 0); |
71 | |
72 | digester.addObjectCreate("pluto-portal-driver/portlet-app", PortletApplicationConfig.class); |
73 | digester.addBeanPropertySetter("pluto-portal-driver/portlet-app/context-path", "contextPath"); |
74 | |
75 | digester.addObjectCreate("pluto-portal-driver/portlet-app/portlets/portlet", PortletWindowConfig.class); |
76 | digester.addSetProperties("pluto-portal-driver/portlet-app/portlets/portlet", "name", "portletName"); |
77 | digester.addSetNext("pluto-portal-driver/portlet-app/portlets/portlet", "addPortlet"); |
78 | digester.addSetNext("pluto-portal-driver/portlet-app", "addPortletApp"); |
79 | |
80 | digester.addObjectCreate("pluto-portal-driver/render-config", OneStartRenderConfig.class); |
81 | digester.addSetProperties("pluto-portal-driver/render-config", "default", "defaultPageId"); |
82 | |
83 | digester.addObjectCreate("pluto-portal-driver/render-config/page", OneStartPageConfig.class); |
84 | digester.addSetProperties("pluto-portal-driver/render-config/page"); |
85 | digester.addObjectCreate("pluto-portal-driver/render-config/page/subtabs/subtab", OneStartSubtab.class); |
86 | digester.addSetProperties("pluto-portal-driver/render-config/page/subtabs/subtab"); |
87 | digester.addSetNext("pluto-portal-driver/render-config/page/subtabs/subtab", "addSubtab"); |
88 | digester.addCallMethod("pluto-portal-driver/render-config/page/portlet", "addPortlet", 5); |
89 | digester.addCallParam("pluto-portal-driver/render-config/page/portlet", 0, "context"); |
90 | digester.addCallParam("pluto-portal-driver/render-config/page/portlet", 1, "name"); |
91 | digester.addCallParam("pluto-portal-driver/render-config/page/portlet", 2, "portletId"); |
92 | digester.addCallParam("pluto-portal-driver/render-config/page/portlet", 3, "column"); |
93 | digester.addCallParam("pluto-portal-driver/render-config/page/portlet", 4, "columnOrder"); |
94 | digester.addObjectCreate("pluto-portal-driver/render-config/page/portlet/portlet-attributes/portlet-attribute", PortletAttribute.class); |
95 | digester.addSetProperties("pluto-portal-driver/render-config/page/portlet/portlet-attributes/portlet-attribute"); |
96 | digester.addSetNext("pluto-portal-driver/render-config/page/portlet/portlet-attributes/portlet-attribute", "addPortletAttribute"); |
97 | digester.addSetNext("pluto-portal-driver/render-config/page", "addPage"); |
98 | |
99 | digester.addSetNext("pluto-portal-driver/render-config", "setRenderConfig"); |
100 | } |
101 | |
102 | } |