This is an automated email from the ASF dual-hosted git repository.
mbrohl pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new a1e700b7d2 Improved: Refactoring WebSiteProperties.java (OFBIZ-12843)
a1e700b7d2 is described below
commit a1e700b7d2d801d0c74298ca22c28c2e373281d9
Author: Cheng Hu Shan <[email protected]>
AuthorDate: Fri Aug 18 10:06:00 2023 +0200
Improved: Refactoring WebSiteProperties.java (OFBIZ-12843)
---
.../ofbiz/webapp/website/WebSiteProperties.java | 195 ++++++++++++---------
1 file changed, 108 insertions(+), 87 deletions(-)
diff --git
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/website/WebSiteProperties.java
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/website/WebSiteProperties.java
index f3f6088aee..80a0143449 100644
---
a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/website/WebSiteProperties.java
+++
b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/website/WebSiteProperties.java
@@ -35,6 +35,31 @@ import org.apache.ofbiz.entity.util.EntityUtilProperties;
@ThreadSafe
public final class WebSiteProperties {
+ private final String httpPort;
+ private final String httpHost;
+ private final String httpsPort;
+ private final String httpsHost;
+ private final String webappPath;
+ private final boolean enableHttps;
+
+ private WebSiteProperties(String httpPort, String httpHost, String
httpsPort, String httpsHost, String webappPath, boolean enableHttps) {
+ this.httpPort = httpPort;
+ this.httpHost = httpHost;
+ this.httpsPort = httpsPort;
+ this.httpsHost = httpsHost;
+ this.webappPath = webappPath;
+ this.enableHttps = enableHttps;
+ }
+
+ private WebSiteProperties(Delegator delegator) {
+ this(
+ EntityUtilProperties.getPropertyValue("url", "port.http",
delegator),
+ EntityUtilProperties.getPropertyValue("url",
"force.http.host", delegator),
+ EntityUtilProperties.getPropertyValue("url", "port.https",
delegator),
+ EntityUtilProperties.getPropertyValue("url",
"force.https.host", delegator),
+ null,
+ EntityUtilProperties.propertyValueEqualsIgnoreCase("url",
"port.https.enabled", "Y", delegator));
+ }
/**
* Returns a <code>WebSiteProperties</code> instance initialized to the
settings found
@@ -56,71 +81,34 @@ public final class WebSiteProperties {
Assert.notNull("request", request);
WebSiteProperties webSiteProps = (WebSiteProperties)
request.getAttribute("_WEBSITE_PROPS_");
if (webSiteProps == null) {
- Boolean dontAddPortoffset = false;
+ Boolean addPortoffset = true;
Delegator delegator = (Delegator)
request.getAttribute("delegator");
- WebSiteProperties defaults = new WebSiteProperties(delegator);
- String httpPort = defaults.getHttpPort();
- String httpHost = defaults.getHttpHost();
- String httpsPort = defaults.getHttpsPort();
- String httpsHost = defaults.getHttpsHost();
- boolean enableHttps = defaults.getEnableHttps();
- String webappPath = null;
if (delegator != null) {
String webSiteId = WebSiteWorker.getWebSiteId(request);
if (webSiteId != null) {
GenericValue webSiteValue =
EntityQuery.use(delegator).from("WebSite").where("webSiteId",
webSiteId).cache().queryOne();
if (webSiteValue != null) {
- if (webSiteValue.get("httpPort") != null) {
- httpPort = webSiteValue.getString("httpPort");
- }
- if (webSiteValue.get("httpHost") != null) {
- httpHost = webSiteValue.getString("httpHost");
- }
- if (webSiteValue.get("httpsPort") != null) {
- httpsPort = webSiteValue.getString("httpsPort");
- }
- if (webSiteValue.get("httpsHost") != null) {
- httpsHost = webSiteValue.getString("httpsHost");
- }
- if (webSiteValue.get("enableHttps") != null) {
- enableHttps =
webSiteValue.getBoolean("enableHttps");
- }
- if (webSiteValue.get("webappPath") != null) {
- webappPath = webSiteValue.getString("webappPath");
- if (webappPath.endsWith("/")) {
- webappPath = webappPath.substring(0,
webappPath.length() - 1);
- }
- }
+ webSiteProps = WebSiteProperties.from(webSiteValue);
}
}
}
- if (httpPort.isEmpty() && !request.isSecure()) {
- httpPort = String.valueOf(request.getServerPort());
+ if (webSiteProps == null) {
+ webSiteProps = new WebSiteProperties(delegator);
}
- if (httpHost.isEmpty()) {
- httpHost = request.getServerName();
+ if (webSiteProps.getHttpPort().isEmpty() && !request.isSecure()) {
+ webSiteProps =
webSiteProps.updateHttpPort(String.valueOf(request.getServerPort()));
}
- if (httpsPort.isEmpty() && request.isSecure()) {
- httpsPort = String.valueOf(request.getServerPort());
- dontAddPortoffset = true; // We take the port from the
request, don't add the portOffset
+ if (webSiteProps.getHttpHost().isEmpty()) {
+ webSiteProps =
webSiteProps.updateHttpHost(request.getServerName());
}
- if (httpsHost.isEmpty()) {
- httpsHost = request.getServerName();
+ if (webSiteProps.getHttpsPort().isEmpty() && request.isSecure()) {
+ webSiteProps =
webSiteProps.updateHttpsPort(String.valueOf(request.getServerPort()));
+ addPortoffset = false; // We take the port from the request,
don't add the portOffset
}
-
- if (Start.getInstance().getConfig().getPortOffset() != 0) {
- Integer httpPortValue = Integer.valueOf(httpPort);
- httpPortValue +=
Start.getInstance().getConfig().getPortOffset();
- httpPort = httpPortValue.toString();
- if (!dontAddPortoffset) {
- Integer httpsPortValue = Integer.valueOf(httpsPort);
- if (!httpsPort.isEmpty()) {
- httpsPortValue +=
Start.getInstance().getConfig().getPortOffset();
- }
- httpsPort = httpsPortValue.toString();
- }
+ if (webSiteProps.getHttpsHost().isEmpty()) {
+ webSiteProps =
webSiteProps.updateHttpsHost(request.getServerName());
}
- webSiteProps = new WebSiteProperties(httpPort, httpHost,
httpsPort, httpsHost, webappPath, enableHttps);
+ webSiteProps = webSiteProps.addPortOffset(addPortoffset);
request.setAttribute("_WEBSITE_PROPS_", webSiteProps);
}
return webSiteProps;
@@ -137,48 +125,81 @@ public final class WebSiteProperties {
throw new IllegalArgumentException("webSiteValue is not a WebSite
entity value");
}
WebSiteProperties defaults = new
WebSiteProperties(webSiteValue.getDelegator());
- String httpPort = (webSiteValue.get("httpPort") != null) ?
webSiteValue.getString("httpPort") : defaults.getHttpPort();
- String httpHost = (webSiteValue.get("httpHost") != null) ?
webSiteValue.getString("httpHost") : defaults.getHttpHost();
- String httpsPort = (webSiteValue.get("httpsPort") != null) ?
webSiteValue.getString("httpsPort") : defaults.getHttpsPort();
- String httpsHost = (webSiteValue.get("httpsHost") != null) ?
webSiteValue.getString("httpsHost") : defaults.getHttpsHost();
- String webappPath = (webSiteValue.get("webappPath") != null) ?
webSiteValue.getString("webappPath") : null;
- boolean enableHttps = (webSiteValue.get("enableHttps") != null) ?
webSiteValue.getBoolean("enableHttps") : defaults.getEnableHttps();
-
- if (Start.getInstance().getConfig().getPortOffset() != 0) {
- Integer httpPortValue = Integer.valueOf(httpPort);
- httpPortValue += Start.getInstance().getConfig().getPortOffset();
- httpPort = httpPortValue.toString();
- Integer httpsPortValue = Integer.valueOf(httpsPort);
- httpsPortValue += Start.getInstance().getConfig().getPortOffset();
- // Here unlike above we trust the user and don't rely on the
request, no dontAddPortoffset.
- httpsPort = httpsPortValue.toString();
+ if (webSiteValue.get("httpPort") != null) {
+ defaults =
defaults.updateHttpPort(webSiteValue.getString("httpPort"));
}
- return new WebSiteProperties(httpPort, httpHost, httpsPort, httpsHost,
webappPath, enableHttps);
+ if (webSiteValue.get("httpHost") != null) {
+ defaults =
defaults.updateHttpHost(webSiteValue.getString("httpHost"));
+ }
+ if (webSiteValue.get("httpsPort") != null) {
+ defaults =
defaults.updateHttpsPort(webSiteValue.getString("httpsPort"));
+ }
+ if (webSiteValue.get("httpsHost") != null) {
+ defaults =
defaults.updateHttpsHost(webSiteValue.getString("httpsHost"));
+ }
+ if (webSiteValue.get("webappPath") != null) {
+ defaults =
defaults.updateWebappPath(webSiteValue.getString("webappPath"));
+ }
+ if (webSiteValue.get("enableHttps") != null) {
+ defaults =
defaults.updateEnableHttps(webSiteValue.getBoolean("enableHttps"));
+ }
+ // Here unlike above we trust the user and don't rely on the request,
so addPortoffset
+ defaults = defaults.addPortOffset(true);
+ return defaults;
}
- private final String httpPort;
- private final String httpHost;
- private final String httpsPort;
- private final String httpsHost;
- private final String webappPath;
- private final boolean enableHttps;
+ /**
+ * Returns a <code>WebSiteProperties</code> instance offset by the
portOffset
+ * that is defined in properties. Offset of https is optionally and only
done
+ * when addHttpsOffset is <code>true</code>
+ *
+ * @param addHttpsOffset
+ * @return
+ */
+ private WebSiteProperties addPortOffset(Boolean addHttpsOffset) {
+ int portOffset = Start.getInstance().getConfig().getPortOffset();
+ String newHttpPort = this.httpPort;
+ String newHttpsPort = this.httpsPort;
+ if (portOffset != 0) {
+ newHttpPort = addPortOffset(newHttpPort, portOffset);
+ if (addHttpsOffset) {
+ newHttpsPort = addPortOffset(newHttpsPort, portOffset);
+ }
+ }
+ return new WebSiteProperties(newHttpPort, this.httpHost, newHttpsPort,
this.httpsHost, this.webappPath, this.enableHttps);
+ }
- private WebSiteProperties(Delegator delegator) {
- this.httpPort = EntityUtilProperties.getPropertyValue("url",
"port.http", delegator);
- this.httpHost = EntityUtilProperties.getPropertyValue("url",
"force.http.host", delegator);
- this.httpsPort = EntityUtilProperties.getPropertyValue("url",
"port.https", delegator);
- this.httpsHost = EntityUtilProperties.getPropertyValue("url",
"force.https.host", delegator);
- this.webappPath = null;
- this.enableHttps =
EntityUtilProperties.propertyValueEqualsIgnoreCase("url", "port.https.enabled",
"Y", delegator);
+ private String addPortOffset(String port, int offset) {
+ Integer value = Integer.valueOf(port);
+ value += offset;
+ return value.toString();
}
- private WebSiteProperties(String httpPort, String httpHost, String
httpsPort, String httpsHost, String webappPath, boolean enableHttps) {
- this.httpPort = httpPort;
- this.httpHost = httpHost;
- this.httpsPort = httpsPort;
- this.httpsHost = httpsHost;
- this.webappPath = webappPath;
- this.enableHttps = enableHttps;
+ private WebSiteProperties updateHttpPort(String newHttpPort) {
+ return new WebSiteProperties(newHttpPort, this.httpHost,
this.httpsPort, this.httpsHost, this.webappPath, this.enableHttps);
+ }
+
+ private WebSiteProperties updateHttpHost(String newHttpHost) {
+ return new WebSiteProperties(this.httpPort, newHttpHost,
this.httpsPort, this.httpsHost, this.webappPath, this.enableHttps);
+ }
+
+ private WebSiteProperties updateHttpsPort(String newHttpsPort) {
+ return new WebSiteProperties(this.httpPort, this.httpHost,
newHttpsPort, this.httpsHost, this.webappPath, this.enableHttps);
+ }
+
+ private WebSiteProperties updateHttpsHost(String newHttpsHost) {
+ return new WebSiteProperties(this.httpPort, this.httpHost,
this.httpsPort, newHttpsHost, this.webappPath, this.enableHttps);
+ }
+
+ private WebSiteProperties updateWebappPath(String newWebappPath) {
+ if (newWebappPath != null && newWebappPath.endsWith("/")) {
+ newWebappPath = newWebappPath.substring(0, newWebappPath.length()
- 1);
+ }
+ return new WebSiteProperties(this.httpPort, this.httpHost,
this.httpsPort, this.httpsHost, newWebappPath, this.enableHttps);
+ }
+
+ private WebSiteProperties updateEnableHttps(boolean newEnableHttps) {
+ return new WebSiteProperties(this.httpPort, this.httpHost,
this.httpsPort, this.httpsHost, this.webappPath, newEnableHttps);
}
/**