1 18 package org.apache.beehive.netui.tags.html; 19 20 import org.apache.beehive.netui.core.urls.FreezableMutableURI; 21 import org.apache.beehive.netui.core.urls.URIContext; 22 import org.apache.beehive.netui.core.urls.URLType; 23 import org.apache.beehive.netui.core.urls.URLRewriterService; 24 import org.apache.beehive.netui.pageflow.PageFlowUtils; 25 import org.apache.beehive.netui.pageflow.internal.URIContextFactory; 26 import org.apache.beehive.netui.tags.AbstractClassicTag; 27 import org.apache.beehive.netui.tags.rendering.TagRenderingBase; 28 import org.apache.beehive.netui.util.Bundle; 29 import org.apache.beehive.netui.util.ParamHelper; 30 import org.apache.beehive.netui.util.config.ConfigUtil; 31 import org.apache.beehive.netui.util.config.bean.UrlConfig; 32 33 import javax.servlet.ServletContext ; 34 import javax.servlet.http.HttpServletRequest ; 35 import javax.servlet.http.HttpServletResponse ; 36 import javax.servlet.jsp.JspException ; 37 import java.net.URISyntaxException ; 38 import java.util.HashMap ; 39 import java.util.Map ; 40 41 54 public class RewriteURL extends AbstractClassicTag implements IUrlParams 55 { 56 private Map _params; protected String url = null; 58 59 62 public String getTagName() 63 { 64 return "RewriteURL"; 65 } 66 67 76 public void setURL(String url) 77 { 78 this.url = url; 79 } 80 81 91 public void addParameter(String name, Object value, String facet) 92 throws JspException 93 { 94 if (_params == null) { 95 _params = new HashMap (); 96 } 97 ParamHelper.addParam(_params, name, value); 98 } 99 100 104 public int doStartTag() throws JspException 105 { 106 return EVAL_BODY_BUFFERED; 108 } 109 110 114 public int doEndTag() throws JspException 115 { 116 HttpServletRequest request = (HttpServletRequest ) pageContext.getRequest(); 117 HttpServletResponse response = (HttpServletResponse ) pageContext.getResponse(); 118 ServletContext context = pageContext.getServletContext(); 119 120 try { 121 boolean encoded = false; 122 UrlConfig urlConfig = ConfigUtil.getConfig().getUrlConfig(); 123 if (urlConfig != null && urlConfig.isSetUrlEncodeUrls()) { 124 encoded = !urlConfig.getUrlEncodeUrls(); 125 } 126 127 FreezableMutableURI uri = new FreezableMutableURI(); 128 uri.setEncoding(response.getCharacterEncoding()); 129 uri.setURI(url, encoded); 130 boolean needsToBeSecure = false; 131 if (_params != null) { 132 uri.addParameters(_params, false ); 133 } 134 if (!uri.isAbsolute() && PageFlowUtils.needsToBeSecure(context, request, url, true)) { 135 needsToBeSecure = true; 136 } 137 138 URLRewriterService.rewriteURL(context, request, response, uri, URLType.ACTION, needsToBeSecure); 139 String key = PageFlowUtils.getURLTemplateKey(URLType.ACTION, needsToBeSecure); 140 boolean forXML = TagRenderingBase.Factory.isXHTML(request); 141 URIContext uriContext = URIContextFactory.getInstance(forXML); 142 String uriString = URLRewriterService.getTemplatedURL(request, uri, key, uriContext); 143 write(response.encodeURL(uriString)); 144 } 145 catch (URISyntaxException e) { 146 String s = Bundle.getString("Tags_RewriteURL_URLException", 148 new Object []{url, e.getMessage()}); 149 registerTagError(s, e); 150 reportErrors(); 151 } 152 153 localRelease(); 154 return EVAL_PAGE; 155 } 156 157 160 protected void localRelease() 161 { 162 super.localRelease(); 163 _params = null; 164 url = null; 165 } 166 167 } 168 | Popular Tags |