Hi Adrian, This introduced a bug in, at least, ecommerce login. The secured link is no longer generated and then you get an issue I reported here https://issues.apache.org/jira/browse/OFBIZ-5312?focusedCommentId=13804011
I will have a look this afternoon (it's 1 PM here, lunch time ;o) Jacques [email protected] wrote: > Author: adrianc > Date: Wed Oct 23 19:35:17 2013 > New Revision: 1535129 > > URL: http://svn.apache.org/r1535129 > Log: > The RequestHandler.makeLink method uses the new URL generation classes. > > I tried to preserve the complicated boolean logic in the replaced block of > code, but if I got something wrong, just leave a > message on the dev mailing list. > > Modified: > > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java > > Modified: > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java > URL: > http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java?rev=1535129&r1=1535128&r2=1535129&view=diff > ============================================================================== > --- > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java > (original) +++ > ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java > Wed Oct 23 19:35:17 2013 @@ -20,6 +20,7 @@ package > org.ofbiz.webapp.control; > > import static org.ofbiz.base.util.UtilGenerics.checkMap; > > +import java.io.IOException; > import java.io.Serializable; > import java.io.UnsupportedEncodingException; > import java.net.URL; > @@ -49,6 +50,7 @@ import org.ofbiz.base.util.UtilValidate; > import org.ofbiz.entity.Delegator; > import org.ofbiz.entity.GenericEntityException; > import org.ofbiz.entity.GenericValue; > +import org.ofbiz.webapp.OfbizUrlBuilder; > import org.ofbiz.webapp.event.EventFactory; > import org.ofbiz.webapp.event.EventHandler; > import org.ofbiz.webapp.event.EventHandlerException; > @@ -57,7 +59,6 @@ import org.ofbiz.webapp.view.ViewFactory > import org.ofbiz.webapp.view.ViewHandler; > import org.ofbiz.webapp.view.ViewHandlerException; > import org.ofbiz.webapp.website.WebSiteWorker; > -import org.ofbiz.webapp.website.WebSiteProperties; > import org.owasp.esapi.errors.EncodingException; > > /** > @@ -1112,55 +1113,40 @@ public class RequestHandler { > } > > public String makeLink(HttpServletRequest request, HttpServletResponse > response, String url, boolean fullPath, boolean > secure, boolean encode) { > - WebSiteProperties webSiteProps = (WebSiteProperties) > request.getAttribute("_WEBSITE_PROPS_"); > - if (webSiteProps == null) { > + OfbizUrlBuilder builder = (OfbizUrlBuilder) > request.getAttribute("_OFBIZ_URL_BUILDER_"); > + if (builder == null) { > try { > - webSiteProps = WebSiteProperties.from(request); > - request.setAttribute("_WEBSITE_PROPS_", webSiteProps); > + builder = OfbizUrlBuilder.from(request); > + request.setAttribute("_OFBIZ_URL_BUILDER_", builder); > } catch (GenericEntityException e) { > // If the entity engine is throwing exceptions, then there is > no point in continuing. > Debug.logError(e, "Exception thrown while getting web site > properties: ", module); > return null; > - } > - } > - String requestUri = RequestHandler.getRequestUri(url); > - ConfigXMLReader.RequestMap requestMap = null; > - if (requestUri != null) { > - try { > - requestMap = > getControllerConfig().getRequestMapMap().get(requestUri); > } catch (WebAppConfigurationException e) { > // If we can't read the controller.xml file, then there is no > point in continuing. > Debug.logError(e, "Exception thrown while parsing > controller.xml file: ", module); > return null; > } > } > - StringBuilder newURL = new StringBuilder(); > boolean didFullSecure = false; > boolean didFullStandard = false; > - if (requestMap != null && (webSiteProps.getEnableHttps() || fullPath > || secure)) { > - if (Debug.verboseOn()) Debug.logVerbose("In makeLink > requestUri=" + requestUri, module); > - if (secure || (webSiteProps.getEnableHttps() && > requestMap.securityHttps && !request.isSecure())) { > - String server = webSiteProps.getHttpsHost(); > - if (server.isEmpty()) { > - server = request.getServerName(); > - } > - newURL.append("https://"); > - newURL.append(server); > - if (!webSiteProps.getHttpsPort().isEmpty()) { > - newURL.append(":").append(webSiteProps.getHttpsPort()); > - } > - didFullSecure = true; > - } else if (fullPath || (webSiteProps.getEnableHttps() && > !requestMap.securityHttps && request.isSecure())) { > - String server = webSiteProps.getHttpHost(); > - if (server.isEmpty()) { > - server = request.getServerName(); > - } > - newURL.append("http://"); > - newURL.append(server); > - if (!webSiteProps.getHttpPort().isEmpty()) { > - newURL.append(":").append(webSiteProps.getHttpPort()); > + StringBuilder newURL = new StringBuilder(250); > + if (fullPath) { > + try { > + boolean usesHttps = builder.buildHostPart(newURL, url, > secure); > + if (usesHttps) { > + didFullSecure = true; > + } else { > + didFullStandard = true; > } > - didFullStandard = true; > + } catch (WebAppConfigurationException e) { > + // If we can't read the controller.xml file, then there is > no point in continuing. > + Debug.logError(e, "Exception thrown while parsing > controller.xml file: ", module); > + return null; > + } catch (IOException e) { > + // If we can't write to the buffer, then there is no point > in continuing. > + Debug.logError(e, "Exception thrown while appending to > StringBuilder: ", module); > + return null; > } > } > // create the path to the control servlet
