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