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