KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > exoplatform > services > portletcontainer > impl > servlet > PortletApplicationListener


1 /**
2  * Copyright 2001-2003 The eXo platform SARL All rights reserved.
3  * Please look at license.txt in info directory for more license detail.
4  **/

5 package org.exoplatform.services.portletcontainer.impl.servlet;
6
7 import java.io.InputStream JavaDoc;
8 import java.util.*;
9 import javax.servlet.*;
10
11 import org.apache.commons.logging.Log;
12 import org.dom4j.Document;
13 import org.dom4j.Node;
14 import org.dom4j.io.SAXReader;
15 import org.exoplatform.container.RootContainer;
16 import org.exoplatform.services.log.LogService;
17 import org.exoplatform.services.portal.skin.SkinConfigService;
18 import org.exoplatform.services.portletcontainer.PortletApplicationRegister;
19 import org.exoplatform.services.portletcontainer.PortletContainerException;
20 import org.exoplatform.services.portletcontainer.pci.model.PortletApp;
21 import org.exoplatform.services.portletcontainer.pci.model.XMLParser;
22 import org.exoplatform.services.xml.resolving.SimpleResolvingService;
23 /**
24  * Created by the Exo Development team.
25  * Author : Mestrallet Benjamin
26  * benjmestrallet@users.sourceforge.net
27  * Date: 10 nov. 2003
28  * Time: 12:58:52
29  */

30 public class PortletApplicationListener implements ServletContextListener {
31   public void contextInitialized(ServletContextEvent servletContextEvent) {
32     RootContainer manager = RootContainer.getInstance();
33     Log log = ((LogService)manager.getComponentInstanceOfType(
34         LogService.class)).getLog("org.exoplatform.services.portletcontainer");
35     ServletContext servletContext = servletContextEvent.getServletContext();
36     log.info("DEPLOY PORTLET APPLICATION: " + servletContext.getServletContextName());
37     log.debug("Real path : "+ servletContext.getRealPath(""));
38     InputStream JavaDoc is = null;
39     try {
40       //look for skin-config and register with the Portal Configuration service
41
is = servletContext.getResourceAsStream("/WEB-INF/skin-config.xml");
42       if (is != null) {
43         SkinConfigService pcservice =
44             (SkinConfigService) manager.getComponentInstanceOfType(SkinConfigService.class);
45         pcservice.addConfiguration(is);
46         log.info("Register skin configuration.............................");
47       }
48
49       is = servletContext.getResourceAsStream("/WEB-INF/portlet.xml");
50       if (is == null) {
51         log.info("PORTLET CONFIGURATION IS NOT FOUND, IGNORE THE PACKAGE");
52         return;
53       }
54       PortletApp portletApp = XMLParser.parse(is);
55       
56       is = servletContext.getResourceAsStream("/WEB-INF/web.xml");
57       Collection roles = new ArrayList();
58       
59       SAXReader reader = new SAXReader();
60       reader.setFeature("http://xml.org/sax/features/validation", true);
61       reader.setFeature("http://apache.org/xml/features/validation/schema", true);
62       reader.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true);
63       reader.setFeature("http://apache.org/xml/features/validation/dynamic", true);
64       
65       SimpleResolvingService serviceXML = (SimpleResolvingService) manager.
66         getComponentInstanceOfType(SimpleResolvingService.class);
67       reader.setEntityResolver(serviceXML.getEntityResolver());
68       Document document = reader.read(is);
69       List list = document.selectNodes("//web-app/security-role/role-name");
70       
71       
72 // XMLQueryingService xmlQueryingService = (XMLQueryingService) RootContainer.getInstance().
73
// getComponentInstanceOfType(XMLQueryingService.class);
74
// SimpleStatementHelper sHelper = xmlQueryingService.createStatementHelper();
75
// XMLDataManager dManager = xmlQueryingService.createXMLDataManager();
76
// XMLQuery query = xmlQueryingService.createQuery();
77
// query.setInputStream(is);
78
// query.prepare(sHelper.select("//web-app/security-role/role-name"));
79
// query.execute();
80
// NodeList nodes = dManager.toFragment(query.getResult()).getAsNodeList();
81
// for (int i = 0; i < nodes.getLength(); i++) {
82
// Node element = (Node) nodes.item(i);
83
// roles.add(element.getText());
84
// }
85

86       for (Iterator iter = list.iterator(); iter.hasNext();) {
87         Node element = (Node) iter.next();
88         roles.add(element.getText());
89       }
90             
91       PortletApplicationRegister service =
92         (PortletApplicationRegister) manager.getComponentInstanceOfType(PortletApplicationRegister.class);
93       service.registerPortletApplication(servletContext, portletApp, roles);
94     } catch (PortletContainerException e) {
95       log.error(e);
96     } catch (Exception JavaDoc e) {
97       log.error(e);
98     }
99   }
100
101   public void contextDestroyed(ServletContextEvent servletContextEvent) {
102     ServletContext servletContext = servletContextEvent.getServletContext();
103     RootContainer manager = RootContainer.getInstance();
104     Log log = ((LogService)manager.getComponentInstanceOfType(
105         LogService.class)).getLog("org.exoplatform.services.portletcontainer");
106     log.info("UNDEPLOY PORTLET APPLICATION: " + servletContext.getServletContextName());
107     try {
108       PortletApplicationRegister service = (PortletApplicationRegister) RootContainer.getInstance().
109           getComponentInstanceOfType(PortletApplicationRegister.class);
110       service.removePortletApplication(servletContext);
111     } catch (Exception JavaDoc e) {
112       log.error(e);
113     }
114   }
115 }
Popular Tags