View Javadoc

1   package com.atlassian.plugin.web.model;
2   
3   import com.atlassian.plugin.web.WebFragmentHelper;
4   import com.atlassian.plugin.web.ContextProvider;
5   import com.atlassian.plugin.web.descriptors.WebFragmentModuleDescriptor;
6   import org.dom4j.Element;
7   
8   import javax.servlet.http.HttpServletRequest;
9   import java.util.Map;
10  
11  /**
12   * Represents a single "href", with a variety of permutations.
13   */
14  public class DefaultWebLink extends AbstractWebItem implements WebLink
15  {
16      String url;
17      boolean absoluteUrl;
18      String accessKey;
19      String id;
20  
21      public DefaultWebLink(Element linkEl, WebFragmentHelper webFragmentHelper, ContextProvider contextProvider, WebFragmentModuleDescriptor descriptor)
22      {
23          super(webFragmentHelper, contextProvider, descriptor);
24          this.url = linkEl.getTextTrim();
25          this.accessKey = linkEl.attributeValue("accessKey");
26          this.id = linkEl.attributeValue("linkId");
27          this.absoluteUrl = "true".equals(linkEl.attributeValue("absolute"));
28      }
29  
30      public String getRenderedUrl(Map<String,Object> context)
31      {
32          context.putAll(getContextMap(context));
33          return getWebFragmentHelper().renderVelocityFragment(url, context);
34      }
35  
36      private boolean isRelativeUrl(String url)
37      {
38          return !(absoluteUrl || url.startsWith("http://") || url.startsWith("https://"));
39      }
40  
41      public String getDisplayableUrl(HttpServletRequest req, Map<String,Object> context)
42      {
43          String renderedUrl = getRenderedUrl(context);
44          if (isRelativeUrl(renderedUrl))
45              return req.getContextPath() + renderedUrl;
46          else
47              return renderedUrl;
48      }
49  
50      public boolean hasAccessKey()
51      {
52          return accessKey != null && !"".equals(accessKey);
53      }
54  
55      public String getAccessKey(Map<String,Object> context)
56      {
57          context.putAll(getContextMap(context));
58          return getWebFragmentHelper().renderVelocityFragment(accessKey, context);
59      }
60  
61      public String getId()
62      {
63          return id;
64      }
65  }