1 package com.atlassian.plugin.webresource;
2
3 import org.apache.commons.lang.BooleanUtils;
4 import org.apache.commons.lang.StringEscapeUtils;
5 import org.apache.commons.lang.StringUtils;
6
7 import java.util.Arrays;
8 import java.util.List;
9 import java.util.Map;
10
11 public class JavascriptWebResource extends AbstractWebResourceFormatter
12 {
13 static final WebResourceFormatter FORMATTER = new JavascriptWebResource();
14
15 private static final String JAVA_SCRIPT_EXTENSION = ".js";
16 private static final String IEONLY_PARAM = "ieonly";
17 private static final String CONDITION_PARAM = "conditionalComment";
18
19 private static final List<String> HANDLED_PARAMETERS = Arrays.asList("charset");
20
21 public boolean matches(String name)
22 {
23 return name != null && name.endsWith(JAVA_SCRIPT_EXTENSION);
24 }
25
26 public String formatResource(String url, Map<String, String> params)
27 {
28 StringBuffer buffer = new StringBuffer("<script type=\"text/javascript\" ");
29 buffer.append("src=\"").append(StringEscapeUtils.escapeHtml(url)).append("\" ");
30 buffer.append(StringUtils.join(getParametersAsAttributes(params).iterator(), " "));
31 buffer.append("></script>\n");
32
33
34 if (params.containsKey(CONDITION_PARAM))
35 {
36 String condition = params.get(CONDITION_PARAM);
37 buffer.insert(0, "<!--[if " + condition + "]>\n");
38 buffer.append("<![endif]-->\n");
39 }
40 else if (BooleanUtils.toBoolean(params.get(IEONLY_PARAM)))
41 {
42 buffer.insert(0, "<!--[if IE]>\n");
43 buffer.append("<![endif]-->\n");
44 }
45
46 return buffer.toString();
47 }
48
49 protected List<String> getAttributeParameters()
50 {
51 return HANDLED_PARAMETERS;
52 }
53 }