Thank you Jacques. I am looking into it now.
Adrian Crum
Sandglass Software
www.sandglass-software.com
On 10/24/2013 3:53 AM, Jacques Le Roux wrote:
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