package org.mifos.ui.core.controller.util.helpers; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import org.springframework.web.util.UrlPathHelper; public class UrlHelper { private final static UrlPathHelper urlPathHelper = new UrlPathHelper(); public static String constructCurrentPageEncodedUrl(HttpServletRequest request){ String originatingServletPath = urlPathHelper.getOriginatingServletPath(request); String originatingQueryString = urlPathHelper.getOriginatingQueryString(request); if ( originatingQueryString == null ){ originatingQueryString = ""; } StringBuilder url = new StringBuilder(originatingServletPath).append("?").append(originatingQueryString).deleteCharAt(originatingServletPath.indexOf('/')); String encodedUrl; try { encodedUrl = URLEncoder.encode(url.toString(), "UTF-8"); } catch (UnsupportedEncodingException e) { encodedUrl = URLEncoder.encode(url.toString()); } return removeSitePreferenceParameterFromUrl(encodedUrl); } public static String constructCurrentPageUrl(HttpServletRequest request){ String originatingServletPath = urlPathHelper.getOriginatingServletPath(request); String originatingQueryString = urlPathHelper.getOriginatingQueryString(request); if ( originatingQueryString == null ){ originatingQueryString = ""; } StringBuilder url = new StringBuilder(originatingServletPath).append("?").append(originatingQueryString).deleteCharAt(originatingServletPath.indexOf('/')); return removeSitePreferenceParameterFromUrl(url.toString()); } private static String removeSitePreferenceParameterFromUrl(String url){ return url.replaceFirst("&site_preference=normal", "").replaceFirst("&site_preference=mobile", ""); } }