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      String accessKey;
18      String id;
19  
20      public DefaultWebLink(Element linkEl, WebFragmentHelper webFragmentHelper, ContextProvider contextProvider, WebFragmentModuleDescriptor descriptor)
21      {
22          super(webFragmentHelper, contextProvider, descriptor);
23          this.url = linkEl.getTextTrim();
24          this.accessKey = linkEl.attributeValue("accessKey");
25          this.id = linkEl.attributeValue("linkId");
26      }
27  
28      public String getRenderedUrl(Map context)
29      {
30          context.putAll(getContextMap(context));
31          return getWebFragmentHelper().renderVelocityFragment(url, context);
32      }
33  
34      private boolean isRelativeUrl(String url)
35      {
36          return !(url.startsWith("http://") || url.startsWith("https://"));
37      }
38  
39      public String getDisplayableUrl(HttpServletRequest req, Map context)
40      {
41          String renderedUrl = getRenderedUrl(context);
42          if (isRelativeUrl(renderedUrl))
43              return req.getContextPath() + renderedUrl;
44          else
45              return renderedUrl;
46      }
47  
48      public boolean hasAccessKey()
49      {
50          return accessKey != null && !"".equals(accessKey);
51      }
52  
53      public String getAccessKey(Map context)
54      {
55          context.putAll(getContextMap(context));
56          return getWebFragmentHelper().renderVelocityFragment(accessKey, context);
57      }
58  
59      public String getId()
60      {
61          return id;
62      }
63  }