1 5 package org.exoplatform.services.portletcontainer.impl.servlet; 6 7 import java.io.InputStream ; 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 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 is = null; 39 try { 40 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 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 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 e) { 112 log.error(e); 113 } 114 } 115 } | Popular Tags |