Author: cbrisson
Date: Wed Jun 20 09:21:22 2018
New Revision: 1833898

URL: http://svn.apache.org/viewvc?rev=1833898&view=rev
Log:
[tools] Review configuration:

* default tools not loaded by default by VelocityView
* default config locations not checked if user provided a custom location (for 
velocity.properties and tools.xml)
* dropped autoloading feature


Modified:
    
velocity/tools/trunk/velocity-tools-examples/velocity-tools-examples-showcase/src/main/webapp/WEB-INF/web.xml
    
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/ToolManager.java
    
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/config/ConfigurationUtils.java
    
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/config/EasyFactoryConfiguration.java
    
velocity/tools/trunk/velocity-tools-generic/src/test/java/org/apache/velocity/tools/test/whitebox/ConfigTests.java
    
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/VelocityView.java
    
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ViewToolManager.java

Modified: 
velocity/tools/trunk/velocity-tools-examples/velocity-tools-examples-showcase/src/main/webapp/WEB-INF/web.xml
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-examples/velocity-tools-examples-showcase/src/main/webapp/WEB-INF/web.xml?rev=1833898&r1=1833897&r2=1833898&view=diff
==============================================================================
--- 
velocity/tools/trunk/velocity-tools-examples/velocity-tools-examples-showcase/src/main/webapp/WEB-INF/web.xml
 (original)
+++ 
velocity/tools/trunk/velocity-tools-examples/velocity-tools-examples-showcase/src/main/webapp/WEB-INF/web.xml
 Wed Jun 20 09:21:22 2018
@@ -27,6 +27,10 @@
     <servlet-name>velocity</servlet-name>
     
<servlet-class>org.apache.velocity.tools.view.VelocityLayoutServlet</servlet-class>
     <init-param>
+      <param-name>org.apache.velocity.tools.loadDefaults</param-name>
+      <param-value>true</param-value>
+    </init-param>
+    <init-param>
       <param-name>org.apache.velocity.tools.cleanConfiguration</param-name>
       <param-value>true</param-value>
     </init-param>

Modified: 
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/ToolManager.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/ToolManager.java?rev=1833898&r1=1833897&r2=1833898&view=diff
==============================================================================
--- 
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/ToolManager.java
 (original)
+++ 
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/ToolManager.java
 Wed Jun 20 09:21:22 2018
@@ -48,8 +48,7 @@ public class ToolManager
 
     /**
      * Constructs an instance already configured to use the 
-     * {@link ConfigurationUtils#getAutoLoaded()} configuration
-     * and any configuration specified via a "org.apache.velocity.tools"
+     * any configuration specified via a "org.apache.velocity.tools"
      * system property.
      */
     public ToolManager()
@@ -74,16 +73,12 @@ public class ToolManager
 
     public void autoConfigure(boolean includeDefaults)
     {
-        FactoryConfiguration config =
-            ConfigurationUtils.getAutoLoaded(includeDefaults);
-
         // look for any specified via system property
         FactoryConfiguration sys = ConfigurationUtils.findFromSystemProperty();
         if (sys != null)
         {
-            config.addConfiguration(sys);
+            configure(sys);
         }
-        configure(config);
     }
 
     public void configure(FactoryConfiguration config)

Modified: 
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/config/ConfigurationUtils.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/config/ConfigurationUtils.java?rev=1833898&r1=1833897&r2=1833898&view=diff
==============================================================================
--- 
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/config/ConfigurationUtils.java
 (original)
+++ 
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/config/ConfigurationUtils.java
 Wed Jun 20 09:21:22 2018
@@ -48,12 +48,8 @@ public class ConfigurationUtils
 {
     public static final String GENERIC_DEFAULTS_PATH =
         "/org/apache/velocity/tools/generic/tools.xml";
-    public static final String XML_DEFAULTS_PATH =
-        "/org/apache/velocity/tools/xml/tools.xml";
     public static final String VIEW_DEFAULTS_PATH =
         "/org/apache/velocity/tools/view/tools.xml";
-    public static final String STRUTS_DEFAULTS_PATH =
-        "/org/apache/velocity/tools/struts/tools.xml";
 
     public static final String AUTOLOADED_XML_PATH = "tools.xml";
     public static final String AUTOLOADED_PROPS_PATH = "tools.properties";
@@ -86,10 +82,8 @@ public class ConfigurationUtils
             new 
XmlFactoryConfiguration("ConfigurationUtils.getDefaultTools()");
         config.read(GENERIC_DEFAULTS_PATH);
 
-        // xml tools, view tools and struts tools may not be available
-        config.read(XML_DEFAULTS_PATH, false);
+        // view tools may not be available
         config.read(VIEW_DEFAULTS_PATH, false);
-        config.read(STRUTS_DEFAULTS_PATH, false);
 
         // defaults should *always* be clean!
         clean(config);
@@ -130,120 +124,6 @@ public class ConfigurationUtils
     }
 
     /**
-     * Returns a {@link FactoryConfiguration} including all default
-     * "VelocityStruts" tools available as well as the default "VelocityView"
-     * tools and "GenericTools".
-     * @throws {@link ConfigurationException} if a tools.xml is not found
-     *   at the {@link #VIEW_DEFAULTS_PATH} or {@link #STRUTS_DEFAULTS_PATH}.
-     */
-    public static FactoryConfiguration getVelocityStruts()
-    {
-        FileFactoryConfiguration config =
-            new 
XmlFactoryConfiguration("ConfigurationUtils.getVelocityStruts()");
-        config.read(GENERIC_DEFAULTS_PATH);
-        config.read(VIEW_DEFAULTS_PATH);
-        config.read(STRUTS_DEFAULTS_PATH);
-
-        // defaults should *always* be clean!
-        clean(config);
-        return config;
-    }
-
-    /**
-     * Returns a {@link FactoryConfiguration} including all
-     * {@link #getDefaultTools()} as well as any tools that can be
-     * automatically loaded from "tools.xml" or "tools.properties" found
-     * at the root of the classpath or in the current directory.
-     *
-     * @see #getAutoLoaded(boolean includeDefaults)
-     */
-    public static FactoryConfiguration getAutoLoaded()
-    {
-        return getAutoLoaded(true);
-    }
-
-    /**
-     * Returns a {@link FactoryConfiguration} including all
-     * {@link #getDefaultTools()} (only if includeDefaults is {@code true}) as 
well as any tools that can be
-     * automatically loaded from "tools.xml" or "tools.properties" found
-     * at the root of the classpath or in the current directory.
-     *
-     * @see #getAutoLoaded(boolean includeDefaults)
-     */
-    public static FactoryConfiguration getAutoLoaded(boolean includeDefaults)
-    {
-        return getAutoLoaded(includeDefaults, true, true);
-    }
-
-    /**
-     * Returns a {@link FactoryConfiguration} composed, in order of the
-     * following configurations:
-     * <ul>
-     *   <li>{@link #getDefaultTools()} (only if includeDefaults is {@code 
true})</li>
-     *   <li>All "tools.xml" configurations found in the classpath root, in 
the order found (only if searchClasspath is true)</li>
-     *   <li>All "tools.properties" configurations found in the classpath 
root, in the order found (only if searchClasspath is true)</li>
-     *   <li>The "tools.xml" file in the current directory (if any, and only 
if searchCurrentDirectory is true)</li>
-     *   <li>The "tools.properties" file in the current directory (if any, and 
only if searchCurrentDirectory is true)</li>
-     * </ul>
-     * If the includeDefaults parameter is null and no such files described 
above
-     * can be found, then the configuration returned by this method will be
-     * empty, but it should never be {@code null}.
-     */
-    public static FactoryConfiguration getAutoLoaded(boolean includeDefaults, 
boolean searchClasspath, boolean searchCurrentDirectory)
-    {
-        FactoryConfiguration auto;
-        if (includeDefaults)
-        {
-            // start with the available defaults
-            auto = getDefaultTools();
-        }
-        else
-        {
-            // start out blank
-            auto = new 
FactoryConfiguration("ConfigurationUtils.getAutoLoaded(false)");
-        }
-
-        //TODO: look for any Tools classes in the root of the classpath
-
-        if (searchClasspath)
-        {
-            // look for all tools.xml in the classpath
-            FactoryConfiguration cpXml = findInClasspath(AUTOLOADED_XML_PATH);
-            if (cpXml != null)
-            {
-                auto.addConfiguration(cpXml);
-            }
-
-            // look for all tools.properties in the classpath
-            FactoryConfiguration cpProps = 
findInClasspath(AUTOLOADED_PROPS_PATH);
-            if (cpProps != null)
-            {
-                auto.addConfiguration(cpProps);
-            }
-        }
-
-        if (searchCurrentDirectory)
-        {
-            // look for tools.xml in the current file system
-            FactoryConfiguration fsXml = findInFileSystem(AUTOLOADED_XML_PATH);
-            if (fsXml != null)
-            {
-                auto.addConfiguration(fsXml);
-            }
-
-            // look for tools.properties in the file system
-            FactoryConfiguration fsProps = 
findInFileSystem(AUTOLOADED_PROPS_PATH);
-            if (fsProps != null)
-            {
-                auto.addConfiguration(fsProps);
-            }
-        }
-
-        // return the config we've accumulated
-        return auto;
-    }
-
-    /**
      * Returns a {@link FactoryConfiguration} loaded from the path specified
      * in the "org.apache.velocity.tools" system property (if any).
      * If no such property has been set {@code null} will be returned.
@@ -262,23 +142,18 @@ public class ConfigurationUtils
 
     /**
      * Returns a new, standard {@link ToolboxFactory} configured
-     * with the results of both {@link #getAutoLoaded()} and
-     * {@link #findFromSystemProperty()}.
+     * with the results of {@link #findFromSystemProperty()}.
      */
     public static ToolboxFactory createFactory()
     {
-        // get the automatically loaded config(s)
-        FactoryConfiguration auto = getAutoLoaded();
-
         // include any config specified via system property
         FactoryConfiguration sys = findFromSystemProperty();
+
+        ToolboxFactory factory = new ToolboxFactory();
         if (sys != null)
         {
-            auto.addConfiguration(sys);
+            factory.configure(sys);
         }
-
-        ToolboxFactory factory = new ToolboxFactory();
-        factory.configure(auto);
         return factory;
     }
 

Modified: 
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/config/EasyFactoryConfiguration.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/config/EasyFactoryConfiguration.java?rev=1833898&r1=1833897&r2=1833898&view=diff
==============================================================================
--- 
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/config/EasyFactoryConfiguration.java
 (original)
+++ 
velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/config/EasyFactoryConfiguration.java
 Wed Jun 20 09:21:22 2018
@@ -145,7 +145,7 @@ public class EasyFactoryConfiguration ex
 
     public EasyFactoryConfiguration autoLoad(boolean includeDefaults)
     {
-        addConfiguration(ConfigurationUtils.getAutoLoaded(includeDefaults));
+        addConfiguration(ConfigurationUtils.getDefaultTools());
         addedDefaults = true;
         return this;
     }

Modified: 
velocity/tools/trunk/velocity-tools-generic/src/test/java/org/apache/velocity/tools/test/whitebox/ConfigTests.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/test/java/org/apache/velocity/tools/test/whitebox/ConfigTests.java?rev=1833898&r1=1833897&r2=1833898&view=diff
==============================================================================
--- 
velocity/tools/trunk/velocity-tools-generic/src/test/java/org/apache/velocity/tools/test/whitebox/ConfigTests.java
 (original)
+++ 
velocity/tools/trunk/velocity-tools-generic/src/test/java/org/apache/velocity/tools/test/whitebox/ConfigTests.java
 Wed Jun 20 09:21:22 2018
@@ -156,22 +156,9 @@ public class ConfigTests {
 
     public @Test void testAutoConfig()
     {
-        FactoryConfiguration autoMinusDef = 
ConfigurationUtils.getAutoLoaded(false);
-        assertValid(autoMinusDef);
-
-        assertValid(autoMinusDef);
-        assertConfigEquals(getBaseConfig(), autoMinusDef);
-
-        FactoryConfiguration auto = ConfigurationUtils.getAutoLoaded();
-        assertValid(auto);
-
         // get the default tools
         FactoryConfiguration def = ConfigurationUtils.getDefaultTools();
         assertValid(def);
-        // add the autoloaded ones (sans defaults) onto the default
-        def.addConfiguration(autoMinusDef);
-        // and see that it comes out the same
-        assertConfigEquals(auto, def);
     }
 
     public @Test void testBadData()

Modified: 
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/VelocityView.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/VelocityView.java?rev=1833898&r1=1833897&r2=1833898&view=diff
==============================================================================
--- 
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/VelocityView.java
 (original)
+++ 
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/VelocityView.java
 Wed Jun 20 09:21:22 2018
@@ -149,7 +149,7 @@ public class VelocityView extends ViewTo
 
     /**
      * Controls loading of available default tool configurations
-     * provided by VelocityTools. The default is true.
+     * provided by VelocityTools. The default is false.
      */
     public static final String LOAD_DEFAULTS_KEY =
         "org.apache.velocity.tools.loadDefaults";
@@ -350,9 +350,19 @@ public class VelocityView extends ViewTo
             velocity.setProperties(appProperties);
         }
 
+        // check for a custom location for servlet-wide user props
+        String servletPropsPath = config.getInitParameter(PROPERTIES_KEY);
+        if (servletPropsPath != null && 
!USER_PROPERTIES_PATH.equals(servletPropsPath) && (appPropsPath == null || 
!appPropsPath.equals(servletPropsPath)))
+        {
+            boolean isInWebInf = servletPropsPath.startsWith("/WEB-INF") || 
servletPropsPath.startsWith("WEB-INF");
+            Properties servletProperties = 
getProperties(DEFAULT_PROPERTIES_PATH, true, !isInWebInf, isInWebInf);
+            getLog().debug("Configuring Velocity with properties at: {}", 
servletPropsPath);
+            velocity.setProperties(servletProperties);
+        }
+
         // check for servlet-wide user props in the config init params at the
         // conventional location, and be silent if they're missing
-        if (!USER_PROPERTIES_PATH.equals(appPropsPath))
+        if (appPropsPath == null && servletPropsPath == null)
         {
             Properties appProperties = getProperties(USER_PROPERTIES_PATH, 
false, false, true);
             if (appProperties != null)
@@ -362,16 +372,6 @@ public class VelocityView extends ViewTo
             }
         }
 
-        // check for a custom location for servlet-wide user props
-        String servletPropsPath = config.getInitParameter(PROPERTIES_KEY);
-        if (servletPropsPath != null && 
!USER_PROPERTIES_PATH.equals(servletPropsPath) && (appPropsPath == null || 
!appPropsPath.equals(servletPropsPath)))
-        {
-            boolean isInWebInf = servletPropsPath.startsWith("/WEB-INF") || 
servletPropsPath.startsWith("WEB-INF");
-            Properties servletProperties = 
getProperties(DEFAULT_PROPERTIES_PATH, true, !isInWebInf, isInWebInf);
-            getLog().debug("Configuring Velocity with properties at: {}", 
servletPropsPath);
-            velocity.setProperties(servletProperties);
-        }
-
         /* now that velocity engine is initialized, re-initialize our logger
            so that it takes potentially provided configuration attributes
            into account
@@ -383,7 +383,6 @@ public class VelocityView extends ViewTo
      * Here's the configuration lookup/loading order:
      * <ol>
      * <li>If loadDefaults is true, {@link 
ConfigurationUtils#getDefaultTools()}</li>
-     * <li>{@link ConfigurationUtils#getAutoLoaded}(false)</li>
      * <li>Config file optionally specified by servletContext {@code 
org.apache.velocity.tools} init-param</li>
      * <li>Config file optionally at {@code /WEB-INF/tools.xml} (conventional 
location)</li>
      * <li>Config file optionally specified by servlet {@code 
org.apache.velocity.tools} init-param</li>
@@ -400,41 +399,54 @@ public class VelocityView extends ViewTo
         FactoryConfiguration factoryConfig = new 
FactoryConfiguration("VelocityView.configure(config,factory)");
 
         String loadDefaults = config.findInitParameter(LOAD_DEFAULTS_KEY);
-        if (loadDefaults == null || "true".equalsIgnoreCase(loadDefaults))
+        if (loadDefaults == null || "false".equalsIgnoreCase(loadDefaults))
         {
-            // add all available default tools
-            getLog().trace("Loading default tools configuration...");
-            
factoryConfig.addConfiguration(ConfigurationUtils.getDefaultTools());
+            // let the user know that the defaults were suppressed
+            getLog().debug("Default tools not loaded.");
         }
         else
         {
-            // let the user know that the defaults were suppressed
-            getLog().debug("Default tools configuration has been suppressed.");
+            // add all available default tools
+            getLog().trace("Loading default tools configuration...");
+            
factoryConfig.addConfiguration(ConfigurationUtils.getDefaultTools());
         }
 
-        // this gets the auto loaded config from the classpath
-        // this doesn't include defaults since they're handled already
-        FactoryConfiguration autoLoaded = 
ConfigurationUtils.getAutoLoaded(false, true, false);
-        factoryConfig.addConfiguration(autoLoaded);
-
         // check for application-wide user config in the context init params
         String appToolsPath = servletContext.getInitParameter(TOOLS_KEY);
-        setConfig(factoryConfig, appToolsPath, true);
-
-        // check for user configuration at the conventional location,
-        // and be silent if they're missing
-        setConfig(factoryConfig, USER_TOOLS_PATH, false);
+        if (appToolsPath != null)
+        {
+            FactoryConfiguration appToolsConfig = 
getConfiguration(appToolsPath, true);
+            factoryConfig.addConfiguration(appToolsConfig);
+            getLog().debug("Loaded configuration from: {}", appToolsPath);
+        }
 
         // check for a custom location for servlet-wide user props
         String servletToolsPath = config.getInitParameter(TOOLS_KEY);
-        setConfig(factoryConfig, servletToolsPath, true);
+        if (servletToolsPath != null)
+        {
+            FactoryConfiguration servletToolsConfig = 
getConfiguration(appToolsPath, true);
+            factoryConfig.addConfiguration(servletToolsConfig);
+            getLog().debug("Loaded configuration from: {}", servletToolsPath);
+        }
+
+        if (appToolsPath == null && servletToolsPath == null)
+        {
+            // check for user configuration at the conventional location,
+            // and be silent if they're missing
+            FactoryConfiguration standardLocationConfiguration = 
getConfiguration(USER_TOOLS_PATH, false);
+            if (standardLocationConfiguration != null)
+            {
+                factoryConfig.addConfiguration(standardLocationConfiguration);
+                getLog().debug("Loaded configuration from: {}", 
USER_TOOLS_PATH);
+            }
+        }
 
         // check for "injected" configuration in application attributes
         FactoryConfiguration injected = 
ServletUtils.getConfiguration(servletContext);
         if (injected != null)
         {
-            getLog().debug("Adding configuration instance in servletContext 
attributes as '{}'", TOOLS_KEY);
             factoryConfig.addConfiguration(injected);
+            getLog().debug("Added configuration instance in servletContext 
attributes as '{}'", TOOLS_KEY);
         }
 
         // see if we should only keep valid tools, data, and properties

Modified: 
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ViewToolManager.java
URL: 
http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ViewToolManager.java?rev=1833898&r1=1833897&r2=1833898&view=diff
==============================================================================
--- 
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ViewToolManager.java
 (original)
+++ 
velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ViewToolManager.java
 Wed Jun 20 09:21:22 2018
@@ -62,9 +62,8 @@ public class ViewToolManager extends Too
     private String toolboxKey = DEFAULT_TOOLBOX_KEY;
 
     /**
-     * Constructs an instance already configured to use the 
-     * {@link ConfigurationUtils#getAutoLoaded()()} configuration
-     * and any configuration specified via a "org.apache.velocity.tools"
+     * Constructs an instance already configured to use
+     * any configuration specified via a "org.apache.velocity.tools"
      * system property.
      */
     public ViewToolManager(ServletContext app)


Reply via email to