You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2019/12/18 12:52:20 UTC
[ofbiz-framework] 01/02: Fixed: Use ‘WebAppUtil#parseWebXmlFile’ when handling “web.xml” files (OFBIZ-6993)
This is an automated email from the ASF dual-hosted git repository.
jleroux pushed a commit to branch release18.12
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
commit e93d8a55607810ab6ab5d1d2e7574a769ceb941a
Author: Samuel Trégouët <sa...@nereide.fr>
AuthorDate: Thu Nov 28 13:48:55 2019 +0100
Fixed: Use ‘WebAppUtil#parseWebXmlFile’ when handling “web.xml” files
(OFBIZ-6993)
# Conflict handled by hand in:
# framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java
---
.../catalina/container/CatalinaContainer.java | 24 +++++++---------------
.../java/org/apache/ofbiz/webapp/WebAppUtil.java | 5 +++++
2 files changed, 12 insertions(+), 17 deletions(-)
diff --git a/framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java b/framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java
index d6deca0..aa1115f 100644
--- a/framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java
+++ b/framework/catalina/src/main/java/org/apache/ofbiz/catalina/container/CatalinaContainer.java
@@ -20,7 +20,6 @@ package org.apache.ofbiz.catalina.container;
import java.io.File;
import java.io.IOException;
-import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -34,7 +33,6 @@ import java.util.stream.Collectors;
import javax.naming.InitialContext;
import javax.naming.NamingException;
-import javax.xml.parsers.ParserConfigurationException;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
@@ -70,19 +68,17 @@ import org.apache.ofbiz.base.container.ContainerConfig;
import org.apache.ofbiz.base.container.ContainerConfig.Configuration;
import org.apache.ofbiz.base.container.ContainerConfig.Configuration.Property;
import org.apache.ofbiz.base.container.ContainerException;
-import org.apache.ofbiz.base.location.FlexibleLocation;
import org.apache.ofbiz.base.start.Start;
import org.apache.ofbiz.base.start.StartupCommand;
import org.apache.ofbiz.base.util.Debug;
import org.apache.ofbiz.base.util.UtilValidate;
-import org.apache.ofbiz.base.util.UtilXml;
import org.apache.ofbiz.entity.util.EntityUtilProperties;
+import org.apache.ofbiz.webapp.WebAppUtil;
import org.apache.tomcat.JarScanner;
import org.apache.tomcat.util.IntrospectionUtils;
import org.apache.tomcat.util.descriptor.web.FilterDef;
import org.apache.tomcat.util.descriptor.web.FilterMap;
import org.apache.tomcat.util.scan.StandardJarScanner;
-import org.w3c.dom.Document;
import org.xml.sax.SAXException;
/**
@@ -500,7 +496,7 @@ public class CatalinaContainer implements Container {
Tomcat.initWebappDefaults(context);
String location = getWebappRootLocation(appInfo);
- boolean contextIsDistributable = isContextDistributable(configuration, location);
+ boolean contextIsDistributable = isContextDistributable(configuration, appInfo);
context.setParent(host);
context.setDocBase(location);
@@ -570,19 +566,13 @@ public class CatalinaContainer implements Container {
return mount;
}
- private boolean isContextDistributable(ContainerConfig.Configuration configuration, String location) throws ContainerException {
- String webXmlFilePath = new StringBuilder().append("file:///").append(location).append("/WEB-INF/web.xml").toString();
+ private static boolean isContextDistributable(ContainerConfig.Configuration configuration,
+ ComponentConfig.WebappInfo appInfo) throws ContainerException {
boolean appIsDistributable = ContainerConfig.getPropertyValue(configuration, "apps-distributable", true);
try {
- URL webXmlUrl = FlexibleLocation.resolveLocation(webXmlFilePath);
- File webXmlFile = new File(webXmlUrl.getFile());
- if (webXmlFile.exists()) {
- Document webXmlDoc = UtilXml.readXmlDocument(webXmlUrl);
- return appIsDistributable && webXmlDoc.getElementsByTagName("distributable").getLength() > 0;
- }
- Debug.logInfo(webXmlFilePath + " not found.", module);
- return appIsDistributable;
- } catch (SAXException | ParserConfigurationException | IOException e) {
+ boolean isDistributable = WebAppUtil.isDistributable(appInfo);
+ return appIsDistributable && isDistributable;
+ } catch (SAXException | IOException e) {
throw new ContainerException(e);
}
}
diff --git a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/WebAppUtil.java b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/WebAppUtil.java
index ccd146b..c8edb15 100644
--- a/framework/webapp/src/main/java/org/apache/ofbiz/webapp/WebAppUtil.java
+++ b/framework/webapp/src/main/java/org/apache/ofbiz/webapp/WebAppUtil.java
@@ -101,6 +101,11 @@ public final class WebAppUtil {
return servletPath;
}
+ public static boolean isDistributable(WebappInfo appinfo) throws IOException, SAXException {
+ WebXml webxml = getWebXml(appinfo);
+ return webxml.isDistributable();
+ }
+
/**
* Returns the <code>WebappInfo</code> instance associated to the specified web site ID.
* Throws <code>IllegalArgumentException</code> if the web site ID was not found.