velocity-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cbris...@apache.org
Subject svn commit: r1746583 - in /velocity/tools/trunk: src/site/ src/site/resources/images/ src/site/xdoc/ src/site/xdoc/css/ velocity-tools-assembly/src/site/ velocity-tools-examples/src/site/ velocity-tools-generic/src/main/java/org/apache/velocity/tools/c...
Date Thu, 02 Jun 2016 14:32:53 GMT
Author: cbrisson
Date: Thu Jun  2 14:32:52 2016
New Revision: 1746583

URL: http://svn.apache.org/viewvc?rev=1746583&view=rev
Log:
remove deprecated site files from tools

Removed:
    velocity/tools/trunk/src/site/resources/images/velocitytools.png
    velocity/tools/trunk/src/site/resources/images/velstruts_diag1.png
    velocity/tools/trunk/src/site/site.xml
    velocity/tools/trunk/src/site/xdoc/changes.xml
    velocity/tools/trunk/src/site/xdoc/config-xml.xml
    velocity/tools/trunk/src/site/xdoc/config.java.xml
    velocity/tools/trunk/src/site/xdoc/config.project.xml
    velocity/tools/trunk/src/site/xdoc/config.properties.xml
    velocity/tools/trunk/src/site/xdoc/config.xml
    velocity/tools/trunk/src/site/xdoc/creatingtools.xml
    velocity/tools/trunk/src/site/xdoc/css/maven-base.css
    velocity/tools/trunk/src/site/xdoc/css/maven-theme.css
    velocity/tools/trunk/src/site/xdoc/css/print.css
    velocity/tools/trunk/src/site/xdoc/css/style.css
    velocity/tools/trunk/src/site/xdoc/dependencies.xml
    velocity/tools/trunk/src/site/xdoc/frameworks.xml
    velocity/tools/trunk/src/site/xdoc/generic.project.xml
    velocity/tools/trunk/src/site/xdoc/generic.xml
    velocity/tools/trunk/src/site/xdoc/index.xml
    velocity/tools/trunk/src/site/xdoc/project.xml
    velocity/tools/trunk/src/site/xdoc/site.dvsl
    velocity/tools/trunk/src/site/xdoc/standalone.xml
    velocity/tools/trunk/src/site/xdoc/struts.project.xml
    velocity/tools/trunk/src/site/xdoc/struts.userguide.xml
    velocity/tools/trunk/src/site/xdoc/struts.xml
    velocity/tools/trunk/src/site/xdoc/summary.xml
    velocity/tools/trunk/src/site/xdoc/upgrading.xml
    velocity/tools/trunk/src/site/xdoc/view.layoutservlet.xml
    velocity/tools/trunk/src/site/xdoc/view.project.xml
    velocity/tools/trunk/src/site/xdoc/view.servlet.xml
    velocity/tools/trunk/src/site/xdoc/view.tag.xml
    velocity/tools/trunk/src/site/xdoc/view.xml
    velocity/tools/trunk/velocity-tools-assembly/src/site/site.xml
    velocity/tools/trunk/velocity-tools-examples/src/site/site.xml
    velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/config/OldXmlFactoryConfigurationRuleSet.java
    velocity/tools/trunk/velocity-tools-generic/src/site/site.xml
    velocity/tools/trunk/velocity-tools-struts/src/site/site.xml
    velocity/tools/trunk/velocity-tools-uberjar/src/site/site.xml
    velocity/tools/trunk/velocity-tools-view-jsp/src/site/site.xml
    velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/DataInfo.java
    velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ToolboxManager.java
    velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ToolboxRuleSet.java
    velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ViewToolInfo.java
    velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/XMLToolboxManager.java
    velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/context/
    velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/servlet/
    velocity/tools/trunk/velocity-tools-view/src/site/site.xml
    velocity/tools/trunk/velocity-tools-xml/src/site/site.xml
Modified:
    velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/EscapeTool.java
    velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ServletUtils.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/VelocityViewServlet.java
    velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/view/VelocityViewTest.java

Modified: velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/EscapeTool.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/EscapeTool.java?rev=1746583&r1=1746582&r2=1746583&view=diff
==============================================================================
--- velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/EscapeTool.java
(original)
+++ velocity/tools/trunk/velocity-tools-generic/src/main/java/org/apache/velocity/tools/generic/EscapeTool.java
Thu Jun  2 14:32:52 2016
@@ -19,14 +19,15 @@ package org.apache.velocity.tools.generi
  * under the License.
  */
 
+import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.io.UnsupportedEncodingException;
 import org.apache.velocity.shaded.commons.lang3.StringEscapeUtils;
 import org.apache.velocity.tools.config.DefaultKey;
 
 /**
- * Tool for working with escaping in Velocity templates.
- * It provides methods to escape outputs for Velocity, Java, JavaScript, HTML, HTTP, XML
and SQL.
+ * Tool for working with escaping and unescaping in Velocity templates.
+ * It provides methods to escape or unescape outputs for Velocity, Java, JavaScript, HTML,
HTTP, XML and SQL.
  * Also provides methods to render VTL characters that otherwise needs escaping.
  *
  * <p><pre>
@@ -36,21 +37,27 @@ import org.apache.velocity.tools.config.
  *
  *  $java                        -> He didn't say, "Stop!"
  *  $esc.java($java)             -> He didn't say, \"Stop!\"
+ *  $esc.unjava($esc($java))     -> He didn't say, "Stop!"
  *
  *  $javascript                  -> He didn't say, "Stop!"
  *  $esc.javascript($javascript) -> He didn\'t say, \"Stop!\"
+ *  $esc.unjavascript($esc.javascript($javascript)) -> He didn't say, "Stop!"
  *
  *  $html                        -> "bread" & "butter"
  *  $esc.html($html)             -> &amp;quot;bread&amp;quot; &amp;amp; &amp;quot;butter&amp;quot;
+ *  $esc.unhtml($esc.html($html))  -> "bread" & "butter"
  *
  *  $xml                         -> "bread" & "butter"
  *  $esc.xml($xml)               -> &amp;quot;bread&amp;quot; &amp;amp; &amp;quot;butter&amp;quot;
+ *  $esc.unxml($esc.xml($xml))   -> "bread" & "butter"
  *
  *  $sql                         -> McHale's Navy
  *  $esc.sql($sql)               -> McHale''s Navy
+ *  $esc.sql($esc.unsql($sqlà))  -> McHale''s Navy
  *
  *  $url                         -> hello here & there
- *  $esc.url                     -> hello+here+%26+there
+ *  $esc.url($url)               -> hello+here+%26+there
+ *  $esc.unurl($esc.url($url))   -> hello+here+%26+there
  *
  *  $esc.dollar                  -> $
  *  $esc.d                       -> $
@@ -190,6 +197,27 @@ public class EscapeTool extends SafeConf
         }
         return StringEscapeUtils.escapeJava(String.valueOf(string));
     }
+
+    /**
+     * Unescapes the characters in a <code>String</code> using Java String rules.
+     * <br />
+     * Delegates the process to {@link StringEscapeUtils#unescapeJava(String)}.
+     *
+     * @param string the string to unescape values, may be null
+     * @return String with unescaped values, <code>null</code> if null string
input
+     *
+     * @see StringEscapeUtils#unescapeJava(String)
+     * @since VelocityTools 3.0
+     */
+    public String unjava(Object string)
+    {
+        if (string == null)
+        {
+            return null;
+        }
+        return StringEscapeUtils.unescapeJava(String.valueOf(string));
+    }
+    
     
     /**
      * Escapes the characters in a <code>String</code> using java.util.Properties
rules for escaping property keys.
@@ -272,12 +300,12 @@ public class EscapeTool extends SafeConf
     /**
      * Escapes the characters in a <code>String</code> using JavaScript String
rules.
      * <br />
-     * Delegates the process to {@link StringEscapeUtils#escapeJavaScript(String)}.
+     * Delegates the process to {@link StringEscapeUtils#escapeEcmaScript(String)}.
      *
      * @param string the string to escape values, may be null
      * @return String with escaped values, <code>null</code> if null string input
      *
-     * @see StringEscapeUtils#escapeJavaScript(String)
+     * @see StringEscapeUtils#escapeEcmaScript(String)
      */
     public String javascript(Object string)
     {
@@ -289,9 +317,29 @@ public class EscapeTool extends SafeConf
     }
 
     /**
+     * Unescapes the characters in a <code>String</code> using JavaScript String
rules.
+     * <br />
+     * Delegates the process to {@link StringEscapeUtils#unescapeEcmaScript(String)}.
+     *
+     * @param string the string to unescape, may be null
+     * @return unescaped String, <code>null</code> if null string input
+     *
+     * @see StringEscapeUtils#unescapeEcmaScript(String)
+     * @since VelocityTools 3.0
+     */
+    public String unjavascript(Object string)
+    {
+        if (string == null)
+        {
+            return null;
+        }
+        return StringEscapeUtils.unescapeEcmaScript(String.valueOf(string));
+    }
+
+    /**
      * Escapes the characters in a <code>String</code> using HTML entities.
      * <br />
-     * Delegates the process to {@link StringEscapeUtils#escapeHtml(String)}.
+     * Delegates the process to {@link StringEscapeUtils#escapeHtml4(String)}.
      *
      * @param string the string to escape, may be null
      * @return a new escaped <code>String</code>, <code>null</code>
if null string input
@@ -308,6 +356,26 @@ public class EscapeTool extends SafeConf
     }
 
     /**
+     * Unescapes the characters in a <code>String</code> encoded with HTML entities.
+     * <br />
+     * Delegates the process to {@link StringEscapeUtils#unescapeHtml4(String)}.
+     *
+     * @param string the string to unescape, may be null
+     * @return a new unescaped <code>String</code>, <code>null</code>
if null string input
+     *
+     * @see StringEscapeUtils#unescapeHtml4(String)
+     * @since VelocityTools 3.0
+     */
+    public String unhtml(Object string)
+    {
+        if (string == null)
+        {
+            return null;
+        }
+        return StringEscapeUtils.unescapeHtml4(String.valueOf(string));
+    }
+
+    /**
      * Escape the characters in a <code>String</code> to be suitable to use as
an HTTP parameter value.
      * <br/>
      * Uses UTF-8 as default character encoding.
@@ -329,6 +397,27 @@ public class EscapeTool extends SafeConf
     }
 
     /**
+     * Unscape the characters in a <code>String</code> encoded as an HTTP parameter
value.
+     * <br/>
+     * Uses UTF-8 as default character encoding.
+     * @param string the string to unescape, may be null
+     * @return a new unescaped <code>String</code>, <code>null</code>
if null string input
+     *
+     * @see java.net.URLDecoder#decode(String,String).
+     * @since VelocityTools 3.0
+     */
+    public String unurl(Object string) {
+        if (string == null) {
+            return null;
+        }
+        try {
+            return URLDecoder.decode(String.valueOf(string),"UTF-8");
+        } catch(UnsupportedEncodingException uee) {
+            return null;
+        }
+    }
+
+    /**
      * Escapes the characters in a <code>String</code> using XML entities.
      * <br />
      * Delegates the process to {@link StringEscapeUtils#escapeXml(String)}.
@@ -348,19 +437,56 @@ public class EscapeTool extends SafeConf
     }
 
     /**
+     * Unescapes the characters in a <code>String</code> encoded with XML entities.
+     * <br />
+     * Delegates the process to {@link StringEscapeUtils#escapeXml(String)}.
+     *
+     * @param string the string to unescape, may be null
+     * @return a new unescaped <code>String</code>, <code>null</code>
if null string input
+     *
+     * @see StringEscapeUtils#unescapeXml(String)
+     * @since VelocityTools 3.0
+     */
+    public String unxml(Object string)
+    {
+        if (string == null)
+        {
+            return null;
+        }
+        return StringEscapeUtils.unescapeXml(String.valueOf(string));
+    }
+
+    /**
      * Escapes the characters in a <code>String</code> to be suitable to pass
to an SQL query.
      * <br />
-     * Delegates the process to {@link StringEscapeUtils#escapeSql(String)}.
      *
      * @param string the string to escape, may be null
      * @return a new String, escaped for SQL, <code>null</code> if null string
input
      *
-     * @see StringEscapeUtils#escapeSql(String)
      */
     public String sql(Object string)
     {
         if (string == null)
         {
+            return null;
+        }
+        return String.valueOf(string).replace("'", "''");
+    }
+
+    /**
+     * Unescapes the characters in a <code>String</code> already encoded for
use in a SQL query.
+     * <br />
+     * Delegates the process to {@link StringEscapeUtils#escapeSql(String)}.
+     *
+     * @param string the string to escape, may be null
+     * @return a new unescaped String, <code>null</code> if null string input
+     * @since VelocityTools 3.0
+     *
+     */
+    public String unsql(Object string)
+    {
+        if (string == null)
+        {
             return null;
         }
         return String.valueOf(string).replace("'", "''");

Modified: velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ServletUtils.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ServletUtils.java?rev=1746583&r1=1746582&r2=1746583&view=diff
==============================================================================
--- velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ServletUtils.java
(original)
+++ velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/ServletUtils.java
Thu Jun  2 14:32:52 2016
@@ -25,6 +25,8 @@ import java.io.FileNotFoundException;
 import java.io.InputStream;
 import java.io.IOException;
 import java.lang.reflect.Constructor;
+import java.util.HashMap;
+import java.util.Map;
 import javax.servlet.FilterConfig;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
@@ -347,13 +349,6 @@ public class ServletUtils
     public static FactoryConfiguration getConfiguration(String path,
                                                         ServletContext application)
     {
-        return getConfiguration(path, application, path.endsWith("toolbox.xml"));
-    }
-
-    public static FactoryConfiguration getConfiguration(String path,
-                                                        ServletContext application,
-                                                        boolean deprecationSupportMode)
-    {
         // first make sure we can even get such a file
         InputStream inputStream = getInputStream(path, application);
         if (inputStream == null)
@@ -363,10 +358,10 @@ public class ServletUtils
 
         // then make sure it's a file type we recognize
         FileFactoryConfiguration config = null;
-        String source = "ServletUtils.getConfiguration("+path+",ServletContext[,depMode="+deprecationSupportMode+"])";
+        String source = "ServletUtils.getConfiguration("+path+")";
         if (path.endsWith(".xml"))
         {
-            config = new XmlFactoryConfiguration(deprecationSupportMode, source);
+            config = new XmlFactoryConfiguration(source);
         }
         else if (path.endsWith(".properties"))
         {
@@ -438,4 +433,40 @@ public class ServletUtils
     {
     }
 
+    private static Map<String,String> mimeTypesMap = null;
+
+    static
+    {
+        // limit ourselves to text mime types, with "vtl" and "vhtml" extensions
+        mimeTypesMap = new HashMap<String,String>();
+        mimeTypesMap.put("cal", "text/calendar");
+        mimeTypesMap.put("css", "text/css");
+        mimeTypesMap.put("csv", "text/csv");
+        mimeTypesMap.put("html", "text/html");
+        mimeTypesMap.put("html4", "text/html");
+        mimeTypesMap.put("html5", "text/html");
+        mimeTypesMap.put("json", "application/json");
+        mimeTypesMap.put("js", "text/javascript");
+        mimeTypesMap.put("jsp", "text/html");
+        mimeTypesMap.put("md", "text/markdown");
+        mimeTypesMap.put("php", "text/html");
+        mimeTypesMap.put("ps", "application/postscript");
+        mimeTypesMap.put("rss", "application/rss+xml");
+        mimeTypesMap.put("rtf", "text/rtf");
+        mimeTypesMap.put("sgml", "text/sgml");
+        mimeTypesMap.put("svg", "image/svg+xml");
+        mimeTypesMap.put("tsv", "text/tab-separated-values");
+        mimeTypesMap.put("txt", "text/plain");
+        mimeTypesMap.put("vhtml", "text/html");
+        mimeTypesMap.put("vtl", "text/html");
+        mimeTypesMap.put("xhtml", "text/html");
+        mimeTypesMap.put("xml", "text/xml");
+        mimeTypesMap.put("xslt", "application/xstl+xml");
+    }
+
+    public static String getMimeTypeFromExtension(String extension)
+    {
+        return mimeTypesMap.get(extension);
+    }
+
 }

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=1746583&r1=1746582&r2=1746583&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
Thu Jun  2 14:32:52 2016
@@ -86,6 +86,7 @@ import org.apache.velocity.util.SimplePo
  * @author <a href="mailto:kjohnson@transparent.com">Kent Johnson</a>
  * @author <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
  * @author Nathan Bubna
+ * @author <a href="mailto:cbrisson@apache.org">Claude Brisson</a>
  *
  * @version $Id: VelocityView.java 511959 2007-02-26 19:24:39Z nbubna $
  */
@@ -105,7 +106,7 @@ public class VelocityView extends ViewTo
     public static final String DEFAULT_CONTENT_TYPE = "text/html";
 
     /** Default encoding for the output stream */
-    public static final String DEFAULT_OUTPUT_ENCODING = "ISO-8859-1";
+    public static final String DEFAULT_OUTPUT_ENCODING = "UTF-8";
 
     /**
      * Key used to access the toolbox configuration file path from the
@@ -114,9 +115,6 @@ public class VelocityView extends ViewTo
      * placed in the ServletContext attributes.
      */
     public static final String TOOLS_KEY = ServletUtils.CONFIGURATION_KEY;
-    @Deprecated
-    public static final String DEPRECATED_TOOLS_KEY =
-        "org.apache.velocity.toolbox";
 
     /**
      * Default toolbox configuration file path. If no alternate value for
@@ -124,9 +122,6 @@ public class VelocityView extends ViewTo
      */
     public static final String USER_TOOLS_PATH =
         "/WEB-INF/tools.xml";
-    @Deprecated
-    public static final String DEPRECATED_USER_TOOLS_PATH =
-        "/WEB-INF/toolbox.xml";
 
     /**
      * Default Runtime properties.
@@ -150,14 +145,9 @@ public class VelocityView extends ViewTo
 
     /**
      * Controls loading of available default tool configurations
-     * provided by VelocityTools.  The default behavior is conditional;
-     * if {@link #DEPRECATION_SUPPORT_MODE_KEY} has not been set to
-     * {@code false} and there is an old {@code toolbox.xml} configuration
-     * present, then the defaults will not be loaded unless you explicitly
-     * set this property to {@code true} in your init params.  If there
-     * is no {@code toolbox.xml} and/or the deprecation support is turned off,
-     * then the default tools will be loaded automatically unless you
-     * explicitly set this property to {@code false} in your init params.
+     * provided by VelocityTools. The default tools will be loaded
+     * automatically unless you explicitly set this property to {@code false}
+     * in your init params.
      */
     public static final String LOAD_DEFAULTS_KEY =
         "org.apache.velocity.tools.loadDefaults";
@@ -178,18 +168,8 @@ public class VelocityView extends ViewTo
     public static final String USER_OVERWRITE_KEY =
         "org.apache.velocity.tools.userCanOverwriteTools";
 
-    /**
-     * Controls support for deprecated tools and configuration.
-     * The default is {@code true}; set to {@code false} to turn off
-     * support for deprecated tools and configuration.
-     */
-    public static final String DEPRECATION_SUPPORT_MODE_KEY =
-        "org.apache.velocity.tools.deprecationSupportMode";
-
-
     private static SimplePool writerPool = new SimplePool(40);
     private String defaultContentType = DEFAULT_CONTENT_TYPE;
-    private boolean deprecationSupportMode = true;
 
     public VelocityView(ServletConfig config)
     {
@@ -214,16 +194,6 @@ public class VelocityView extends ViewTo
         init(config);
     }
 
-    @Deprecated
-    protected final void setDeprecationSupportMode(boolean support)
-    {
-        if (deprecationSupportMode != support)
-        {
-            this.deprecationSupportMode = support;
-            debug("deprecationSupportMode is now %s", (support ? "on" : "off"));
-        }
-    }
-
     /**
      * Overrides super class to ensure engine is not set to null.
      */
@@ -295,12 +265,6 @@ public class VelocityView extends ViewTo
             this.velocity = new VelocityEngine();
         }
 
-        // default is true for these, so just watch for false
-        String depMode = config.findInitParameter(DEPRECATION_SUPPORT_MODE_KEY);
-        if (depMode != null && depMode.equalsIgnoreCase("false"))
-        {
-            setDeprecationSupportMode(false);
-        }
         String allowOverwrite = config.findInitParameter(USER_OVERWRITE_KEY);
         if (allowOverwrite != null && allowOverwrite.equalsIgnoreCase("false"))
         {
@@ -410,16 +374,10 @@ public class VelocityView extends ViewTo
     /**
      * Here's the configuration lookup/loading order:
      * <ol>
-     * <li>If deprecationSupportMode is true:
-     *   <ol>
-     *   <li>Config file optionally specified by {@code org.apache.velocity.toolbox}
init-param (servlet or servletContext)</li>
-     *   <li>If none, config file optionally at {@code /WEB-INF/toolbox.xml} (deprecated
conventional location)</li>
-     *   </ol>
-     * </li>
-     * <li>If no old toolbox or loadDefaults is true, {@link ConfigurationUtils#getDefaultTools()}</li>
+     * <li>{@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} (new conventional location)</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>
      * </ol>
      * Remember that as these configurations are added on top of each other,
@@ -433,21 +391,10 @@ public class VelocityView extends ViewTo
     {
         FactoryConfiguration factoryConfig = new FactoryConfiguration("VelocityView.configure(config,factory)");
 
-        boolean hasOldToolbox = false;
-        if (this.deprecationSupportMode)
-        {
-            FactoryConfiguration oldToolbox = getDeprecatedConfig(config);
-            if (oldToolbox != null)
-            {
-                hasOldToolbox = true;
-                factoryConfig.addConfiguration(oldToolbox);
-            }
-        }
-
         // only load the default tools if they have explicitly said to
         // or if they are not using an old toolbox and have said nothing
         String loadDefaults = config.findInitParameter(LOAD_DEFAULTS_KEY);
-        if ((!hasOldToolbox && loadDefaults == null) ||
+        if ((loadDefaults == null) ||
             "true".equalsIgnoreCase(loadDefaults))
         {
             // add all available default tools
@@ -457,10 +404,7 @@ public class VelocityView extends ViewTo
         else
         {
             // let the user know that the defaults were suppressed
-            debug("Default tools configuration has been suppressed%s",
-                  (hasOldToolbox ?
-                   " to avoid conflicts with older application's context and toolbox definition."
:
-                   "."));
+            debug("Default tools configuration has been suppressed.");
         }
 
         // this gets the auto loaded config from the classpath
@@ -505,45 +449,6 @@ public class VelocityView extends ViewTo
         configure(factoryConfig);
     }
 
-    /**
-     * First tries to find a path to a toolbox under the deprecated
-     * {@code org.apache.velocity.toolbox} key.
-     * If found, it tries to load the configuration there and will blow up
-     * if there is no config file there.
-     * If not found, it looks for a config file at /WEB-INF/toolbox.xml
-     * (the deprecated default location) and tries to load it if found.
-     */
-    @Deprecated
-    protected FactoryConfiguration getDeprecatedConfig(JeeConfig config)
-    {
-        FactoryConfiguration toolbox = null;
-
-        // look for specified path under the deprecated toolbox key
-        String oldPath = config.findInitParameter(DEPRECATED_TOOLS_KEY);
-        if (oldPath != null)
-        {
-            // ok, they said the toolbox.xml should be there
-            // so this should blow up if it is not
-            toolbox = getConfiguration(oldPath, true);
-        }
-        else
-        {
-            // check for deprecated user configuration at the old conventional
-            // location.  be silent if missing, log deprecation warning otherwise
-            oldPath = DEPRECATED_USER_TOOLS_PATH;
-            toolbox = getConfiguration(oldPath);
-        }
-
-        if (toolbox != null)
-        {
-            debug("Loaded deprecated configuration from: %s", oldPath);
-            getLog().warn("Please upgrade to new \"/WEB-INF/tools.xml\" format and conventional
location."+
-                          " Support for \"/WEB-INF/toolbox.xml\" format and conventional
file name will "+
-                          "be removed in a future version.");
-        }
-        return toolbox;
-    }
-
     private boolean setConfig(FactoryConfiguration factory, String path, boolean require)
     {
         if (path == null)
@@ -656,8 +561,7 @@ public class VelocityView extends ViewTo
         try
         {
             config = ServletUtils.getConfiguration(path,
-                                                   this.servletContext,
-                                                   this.deprecationSupportMode);
+                                                   this.servletContext);
             if (config == null)
             {
                 String msg = "Did not find resource at: "+path;
@@ -699,32 +603,36 @@ public class VelocityView extends ViewTo
         String encoding = getProperty(RuntimeConstants.OUTPUT_ENCODING,
                                       DEFAULT_OUTPUT_ENCODING);
 
-        // For non Latin-1 encodings, ensure that the charset is
-        // included in the Content-Type header.
-        if (!DEFAULT_OUTPUT_ENCODING.equalsIgnoreCase(encoding))
+        // Ensure that the charset is included in the Content-Type header.
+        int index = defaultContentType.lastIndexOf("charset=");
+        if (index < 0)
+        {
+            // the charset specifier is not yet present in header.
+            // append character encoding to default content-type
+            defaultContentType += "; charset=" + encoding;
+        }
+        else
         {
-            int index = defaultContentType.lastIndexOf("charset");
-            if (index < 0)
-            {
-                // the charset specifier is not yet present in header.
-                // append character encoding to default content-type
-                this.defaultContentType += "; charset=" + encoding;
-            }
-            else
-            {
-                // The user may have configuration issues.
-                getLog().info("Charset was already " +
-                              "specified in the Content-Type property.  " +
-                              "Output encoding property will be ignored.");
-            }
+            // The user may have configuration issues.
+            getLog().info("Charset was already specified in the Content-Type property.");
+            // but listen to the last to speak
+            defaultContentType = defaultContentType.substring(0, index + 8) + encoding;
         }
 
-        debug("Default Content-Type is: %s", defaultContentType);
+        debug("Default ContentType was changed to %s", defaultContentType);
     }
 
-
-
-
+    /**
+     * Returns the configured default encoding (parsed from content type,
+     * or UTF-8 by default)
+     */
+    public String getEncoding()
+    {
+        int i = this.defaultContentType.lastIndexOf("charset=");
+        return i != -1 ?
+            this.defaultContentType.substring(i + 8).replace('"',' ').trim() :
+            DEFAULT_OUTPUT_ENCODING;
+    }
 
     /******************* REQUEST PROCESSING ****************************/
 
@@ -781,14 +689,7 @@ public class VelocityView extends ViewTo
                                          HttpServletResponse response)
     {
         ViewToolContext ctx;
-        if (this.deprecationSupportMode)
-        {
-            ctx = new ChainedContext(velocity, request, response, servletContext);
-        }
-        else
-        {
-            ctx = new ViewToolContext(velocity, request, response, servletContext);
-        }
+        ctx = new ViewToolContext(velocity, request, response, servletContext);
         prepareContext(ctx, request);
         return ctx;
     }
@@ -807,29 +708,6 @@ public class VelocityView extends ViewTo
     }
 
     /**
-     * <p>Gets the requested template.</p>
-     *
-     * @param request client request
-     * @param response client response.
-     * @return Velocity Template object or null
-     * @deprecated Use {@link #getTemplate(HttpServletRequest)}.
-     */
-    public Template getTemplate(HttpServletRequest request,
-                                   HttpServletResponse response)
-    {
-        String path = ServletUtils.getPath(request);
-        if (response == null)
-        {
-            return getTemplate(path);
-        }
-        else
-        {
-            return getTemplate(path, response.getCharacterEncoding());
-        }
-    }
-
-
-    /**
      * Retrieves the requested template.
      *
      * @param name The file name of the template to retrieve relative to the

Modified: velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/VelocityViewServlet.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/VelocityViewServlet.java?rev=1746583&r1=1746582&r2=1746583&view=diff
==============================================================================
--- velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/VelocityViewServlet.java
(original)
+++ velocity/tools/trunk/velocity-tools-view/src/main/java/org/apache/velocity/tools/view/VelocityViewServlet.java
Thu Jun  2 14:32:52 2016
@@ -275,7 +275,8 @@ public class VelocityViewServlet extends
      * Sets the content type of the response.  This is available to be overriden
      * by a derived class.
      *
-     * <p>The default implementation is :
+     * <p>The default implementation is to detect content type based on the
+     * requested path extension, if any, or otherwise to rely on:
      * <code>
      *    response.setContentType(getVelocityView().getDefaultContentType());
      * </code>
@@ -289,7 +290,24 @@ public class VelocityViewServlet extends
     protected void setContentType(HttpServletRequest request,
                                   HttpServletResponse response)
     {
-        response.setContentType(getVelocityView().getDefaultContentType());
+        String contentType = null;
+        String uri = request.getRequestURI();
+        int dot = uri.lastIndexOf('.');
+        if (dot != -1)
+        {
+            String extension = uri.substring(dot + 1);
+            contentType = ServletUtils.getMimeTypeFromExtension(extension);
+        }
+        if (contentType == null)
+        {
+            contentType = getVelocityView().getDefaultContentType();
+        }
+        else
+        {
+            // append charset
+            contentType += ";charset=" + getVelocityView().getEncoding();
+        }
+        response.setContentType(contentType);
     }
 
     protected Template getTemplate(HttpServletRequest request,

Modified: velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/view/VelocityViewTest.java
URL: http://svn.apache.org/viewvc/velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/view/VelocityViewTest.java?rev=1746583&r1=1746582&r2=1746583&view=diff
==============================================================================
--- velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/view/VelocityViewTest.java
(original)
+++ velocity/tools/trunk/velocity-tools-view/src/test/java/org/apache/velocity/tools/view/VelocityViewTest.java
Thu Jun  2 14:32:52 2016
@@ -61,7 +61,6 @@ public class VelocityViewTest
         Context context = createMock(Context.class);
 
         expect(config.getServletContext()).andReturn(servletContext);
-        expect(config.findInitParameter(VelocityView.DEPRECATION_SUPPORT_MODE_KEY)).andReturn("false");
         expect(config.findInitParameter(VelocityView.USER_OVERWRITE_KEY)).andReturn(null);
         expect(config.findInitParameter(VelocityView.LOAD_DEFAULTS_KEY)).andReturn("false");
         expect(servletContext.getInitParameter(VelocityView.PROPERTIES_KEY)).andReturn(null);



Mime
View raw message