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.