1
22
23 package com.liferay.portal.tools;
24
25 import com.liferay.portal.kernel.plugin.PluginPackage;
26 import com.liferay.portal.kernel.util.StringUtil;
27 import com.liferay.portal.kernel.util.Validator;
28 import com.liferay.portal.model.Plugin;
29 import com.liferay.portal.util.InitUtil;
30 import com.liferay.util.TextFormatter;
31
32 import java.io.File;
33
34 import java.util.ArrayList;
35 import java.util.HashMap;
36 import java.util.List;
37 import java.util.Map;
38 import java.util.Properties;
39
40
46 public class ThemeDeployer extends BaseDeployer {
47
48 public static void main(String[] args) {
49 InitUtil.initWithSpring();
50
51 List<String> wars = new ArrayList<String>();
52 List<String> jars = new ArrayList<String>();
53
54 for (String arg : args) {
55 if (arg.endsWith(".war")) {
56 wars.add(arg);
57 }
58 else if (arg.endsWith(".jar")) {
59 jars.add(arg);
60 }
61 }
62
63 new ThemeDeployer(wars, jars);
64 }
65
66 protected ThemeDeployer() {
67 }
68
69 protected ThemeDeployer(List<String> wars, List<String> jars) {
70 super(wars, jars);
71 }
72
73 protected void checkArguments() {
74 super.checkArguments();
75
76 if (Validator.isNull(themeTaglibDTD)) {
77 throw new IllegalArgumentException(
78 "The system property deployer.theme.taglib.dtd is not set");
79 }
80
81 if (Validator.isNull(utilTaglibDTD)) {
82 throw new IllegalArgumentException(
83 "The system property deployer.util.taglib.dtd is not set");
84 }
85 }
86
87 protected String getExtraContent(
88 double webXmlVersion, File srcFile, String displayName)
89 throws Exception {
90
91 StringBuilder sb = new StringBuilder();
92
93 String extraContent = super.getExtraContent(
94 webXmlVersion, srcFile, displayName);
95
96 sb.append(extraContent);
97
98
100 sb.append("<filter>");
101 sb.append("<filter-name>Header Filter</filter-name>");
102 sb.append("<filter-class>");
103 sb.append("com.liferay.portal.kernel.servlet.PortalClassLoaderFilter");
104 sb.append("</filter-class>");
105 sb.append("<init-param>");
106 sb.append("<param-name>filter-class</param-name>");
107 sb.append("<param-value>");
108 sb.append("com.liferay.portal.servlet.filters.header.HeaderFilter");
109 sb.append("</param-value>");
110 sb.append("</init-param>");
111 sb.append("<init-param>");
112 sb.append("<param-name>Cache-Control</param-name>");
113 sb.append("<param-value>max-age=172801, public</param-value>");
114 sb.append("</init-param>");
115 sb.append("<init-param>");
116 sb.append("<param-name>Expires</param-name>");
117 sb.append("<param-value>172801</param-value>");
118 sb.append("</init-param>");
119 sb.append("</filter>");
120
121 sb.append("<filter-mapping>");
122 sb.append("<filter-name>Header Filter</filter-name>");
123 sb.append("<url-pattern>*.css</url-pattern>");
124 sb.append("</filter-mapping>");
125 sb.append("<filter-mapping>");
126 sb.append("<filter-name>Header Filter</filter-name>");
127 sb.append("<url-pattern>*.gif</url-pattern>");
128 sb.append("</filter-mapping>");
129 sb.append("<filter-mapping>");
130 sb.append("<filter-name>Header Filter</filter-name>");
131 sb.append("<url-pattern>*.html</url-pattern>");
132 sb.append("</filter-mapping>");
133 sb.append("<filter-mapping>");
134 sb.append("<filter-name>Header Filter</filter-name>");
135 sb.append("<url-pattern>*.jpg</url-pattern>");
136 sb.append("</filter-mapping>");
137 sb.append("<filter-mapping>");
138 sb.append("<filter-name>Header Filter</filter-name>");
139 sb.append("<url-pattern>*.js</url-pattern>");
140 sb.append("</filter-mapping>");
141 sb.append("<filter-mapping>");
142 sb.append("<filter-name>Header Filter</filter-name>");
143 sb.append("<url-pattern>*.png</url-pattern>");
144 sb.append("</filter-mapping>");
145
146
148 sb.append("<filter>");
149 sb.append("<filter-name>Compression Filter</filter-name>");
150 sb.append("<filter-class>");
151 sb.append("com.liferay.portal.kernel.servlet.PortalClassLoaderFilter");
152 sb.append("</filter-class>");
153 sb.append("<init-param>");
154 sb.append("<param-name>filter-class</param-name>");
155 sb.append("<param-value>");
156 sb.append(
157 "com.liferay.portal.servlet.filters.compression.CompressionFilter");
158 sb.append("</param-value>");
159 sb.append("</init-param>");
160 sb.append("</filter>");
161
162 sb.append("<filter-mapping>");
163 sb.append("<filter-name>Compression Filter</filter-name>");
164 sb.append("<url-pattern>*.css</url-pattern>");
165 sb.append("</filter-mapping>");
166 sb.append("<filter-mapping>");
167 sb.append("<filter-name>Compression Filter</filter-name>");
168 sb.append("<url-pattern>*.js</url-pattern>");
169 sb.append("</filter-mapping>");
170
171
173 sb.append("<filter>");
174 sb.append("<filter-name>Velocity Filter</filter-name>");
175 sb.append("<filter-class>");
176 sb.append("com.liferay.portal.kernel.servlet.PortalClassLoaderFilter");
177 sb.append("</filter-class>");
178 sb.append("<init-param>");
179 sb.append("<param-name>filter-class</param-name>");
180 sb.append("<param-value>");
181 sb.append("com.liferay.portal.servlet.filters.velocity.VelocityFilter");
182 sb.append("</param-value>");
183 sb.append("</init-param>");
184 sb.append("<init-param>");
185 sb.append("<param-name>pattern</param-name>");
186 sb.append("<param-value>(.+)/css/main.css(.+)</param-value>");
187 sb.append("</init-param>");
188 sb.append("</filter>");
189
190
201
202
204 sb.append("<listener>");
205 sb.append("<listener-class>");
206 sb.append("com.liferay.portal.kernel.servlet.ThemeContextListener");
207 sb.append("</listener-class>");
208 sb.append("</listener>");
209
210 return sb.toString();
211 }
212
213 protected void processPluginPackageProperties(
214 File srcFile, String displayName, PluginPackage pluginPackage)
215 throws Exception {
216
217 if (pluginPackage == null) {
218 return;
219 }
220
221 Properties props = getPluginPackageProperties(srcFile);
222
223 if ((props == null) || (props.size() == 0)) {
224 return;
225 }
226
227 String moduleGroupId = pluginPackage.getGroupId();
228 String moduleArtifactId = pluginPackage.getArtifactId();
229 String moduleVersion = pluginPackage.getVersion();
230
231 String pluginName = pluginPackage.getName();
232 String pluginType = pluginPackage.getTypes().get(0);
233 String pluginTypeName = TextFormatter.format(
234 pluginType, TextFormatter.J);
235
236 if (!pluginType.equals(Plugin.TYPE_THEME)) {
237 return;
238 }
239
240 String tags = getPluginPackageTagsXml(pluginPackage.getTags());
241 String shortDescription = pluginPackage.getShortDescription();
242 String longDescription = pluginPackage.getLongDescription();
243 String changeLog = pluginPackage.getChangeLog();
244 String pageURL = pluginPackage.getPageURL();
245 String author = pluginPackage.getAuthor();
246 String licenses = getPluginPackageLicensesXml(
247 pluginPackage.getLicenses());
248 String liferayVersions = getPluginPackageLiferayVersionsXml(
249 pluginPackage.getLiferayVersions());
250
251 int pos = moduleArtifactId.indexOf("-theme");
252
253 String themeId = moduleArtifactId.substring(0, pos);
254 String themeName = pluginName;
255
256 Map<String, String> filterMap = new HashMap<String, String>();
257
258 filterMap.put("module_group_id", moduleGroupId);
259 filterMap.put("module_artifact_id", moduleArtifactId);
260 filterMap.put("module_version", moduleVersion);
261
262 filterMap.put("plugin_name", pluginName);
263 filterMap.put("plugin_type", pluginType);
264 filterMap.put("plugin_type_name", pluginTypeName);
265
266 filterMap.put("tags", tags);
267 filterMap.put("short_description", shortDescription);
268 filterMap.put("long_description", longDescription);
269 filterMap.put("change_log", changeLog);
270 filterMap.put("page_url", pageURL);
271 filterMap.put("author", author);
272 filterMap.put("licenses", licenses);
273 filterMap.put("liferay_versions", liferayVersions);
274
275 filterMap.put("theme_id", themeId);
276 filterMap.put("theme_name", themeName);
277 filterMap.put(
278 "theme_versions",
279 StringUtil.replace(liferayVersions, "liferay-version", "version"));
280
281 copyDependencyXml(
282 "liferay-look-and-feel.xml", srcFile + "/WEB-INF", filterMap, true);
283 copyDependencyXml(
284 "liferay-plugin-package.xml", srcFile + "/WEB-INF", filterMap,
285 true);
286 }
287
288 }