001
014
015 package com.liferay.portal.deploy.hot;
016
017 import com.liferay.portal.kernel.deploy.hot.BaseHotDeployListener;
018 import com.liferay.portal.kernel.deploy.hot.HotDeployEvent;
019 import com.liferay.portal.kernel.deploy.hot.HotDeployException;
020 import com.liferay.portal.kernel.log.Log;
021 import com.liferay.portal.kernel.log.LogFactoryUtil;
022 import com.liferay.portal.kernel.servlet.ServletContextPool;
023 import com.liferay.portal.kernel.util.HttpUtil;
024 import com.liferay.portal.theme.ThemeLoaderFactory;
025
026 import javax.servlet.ServletContext;
027
028
031 public class ThemeLoaderHotDeployListener extends BaseHotDeployListener {
032
033 public void invokeDeploy(HotDeployEvent hotDeployEvent)
034 throws HotDeployException {
035
036 try {
037 doInvokeDeploy(hotDeployEvent);
038 }
039 catch (Throwable t) {
040 throwHotDeployException(
041 hotDeployEvent, "Error registering theme loader for ", t);
042 }
043 }
044
045 public void invokeUndeploy(HotDeployEvent hotDeployEvent)
046 throws HotDeployException {
047
048 try {
049 doInvokeUndeploy(hotDeployEvent);
050 }
051 catch (Throwable t) {
052 throwHotDeployException(
053 hotDeployEvent, "Error unregistering theme loader for ", t);
054 }
055 }
056
057 protected void doInvokeDeploy(HotDeployEvent hotDeployEvent)
058 throws Exception {
059
060 ServletContext servletContext = hotDeployEvent.getServletContext();
061
062 String servletContextName = servletContext.getServletContextName();
063
064 if (_log.isDebugEnabled()) {
065 _log.debug("Invoking deploy for " + servletContextName);
066 }
067
068 String[] xmls = new String[] {
069 HttpUtil.URLtoString(
070 servletContext.getResource("/WEB-INF/liferay-theme-loader.xml"))
071 };
072
073 if (xmls[0] == null) {
074 return;
075 }
076
077 if (_log.isInfoEnabled()) {
078 _log.info("Registering theme loader for " + servletContextName);
079 }
080
081 ThemeLoaderFactory.init(servletContextName, servletContext, xmls);
082 }
083
084 protected void doInvokeUndeploy(HotDeployEvent hotDeployEvent)
085 throws Exception {
086
087 ServletContext servletContext = hotDeployEvent.getServletContext();
088
089 String servletContextName = servletContext.getServletContextName();
090
091 if (_log.isDebugEnabled()) {
092 _log.debug("Invoking undeploy for " + servletContextName);
093 }
094
095 boolean value = ThemeLoaderFactory.destroy(servletContextName);
096
097 if (!value) {
098 return;
099 }
100
101 if (_log.isInfoEnabled()) {
102 _log.info("Unregistering theme loader for " + servletContextName);
103 }
104
105 ServletContextPool.remove(servletContextName);
106
107 if (_log.isInfoEnabled()) {
108 _log.info(
109 "Theme loader for " + servletContextName +
110 " unregistered successfully");
111 }
112 }
113
114 private static Log _log = LogFactoryUtil.getLog(
115 ThemeLoaderHotDeployListener.class);
116
117 }