View Javadoc

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          // ie conditional commment
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  }