You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@velocity.apache.org by nb...@apache.org on 2007/05/18 20:50:40 UTC

svn commit: r539557 - in /velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools: OldToolInfo.java ToolInfo.java Toolbox.java view/tools/AbstractSearchTool.java view/tools/BrowserSnifferTool.java

Author: nbubna
Date: Fri May 18 11:50:39 2007
New Revision: 539557

URL: http://svn.apache.org/viewvc?view=rev&rev=539557
Log:
- make Toolbox, ToolInfo, OldToolInfo, and BrowserSnifferTool serializable for storage in session scope
- also make AbstractSearchTool$StoredResults static for more consistent serialization across JVMs

Modified:
    velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/OldToolInfo.java
    velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ToolInfo.java
    velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/Toolbox.java
    velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/tools/AbstractSearchTool.java
    velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/tools/BrowserSnifferTool.java

Modified: velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/OldToolInfo.java
URL: http://svn.apache.org/viewvc/velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/OldToolInfo.java?view=diff&rev=539557&r1=539556&r2=539557
==============================================================================
--- velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/OldToolInfo.java (original)
+++ velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/OldToolInfo.java Fri May 18 11:50:39 2007
@@ -30,9 +30,9 @@
  * @author Nathan Bubna
  * @version $Id: OldToolInfo.java 511959 2007-02-26 19:24:39Z nbubna $
  */
-//TODO: make this class serializable
 public class OldToolInfo extends ToolInfo
 {
+    private static final long serialVersionUID = -4062162635847288761L;
     public static final String INIT_METHOD_NAME = "init";
 
     private Method init;

Modified: velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ToolInfo.java
URL: http://svn.apache.org/viewvc/velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ToolInfo.java?view=diff&rev=539557&r1=539556&r2=539557
==============================================================================
--- velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ToolInfo.java (original)
+++ velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/ToolInfo.java Fri May 18 11:50:39 2007
@@ -34,9 +34,9 @@
  * @author <a href="mailto:henning@schmiedehausen.org">Henning P. Schmiedehausen</a>
  * @version $Id: ToolInfo.java 511959 2007-02-26 19:24:39Z nbubna $
  */
-//TODO: make this class serializable
-public class ToolInfo
+public class ToolInfo implements java.io.Serializable
 {
+    private static final long serialVersionUID = -8145087882015742757L;
     public static final String CONFIGURE_METHOD_NAME = "configure";
 
     private String key;
@@ -44,7 +44,7 @@
     private boolean restrictToIsExact;
     private String restrictTo;
     private Map<String,Object> properties;
-    private Method configure = null;
+    private transient Method configure = null;
 
     /**
      * Creates a new instance using the minimum required info
@@ -87,35 +87,6 @@
         //      in order to fail as earlier as possible.  most people won't
         //      manually create ToolInfo.  if they do and we can't get an
         //      instance, they should be capable of figuring out what happened
-
-        // search for a configure(Map params) method in the class
-        try
-        {
-            this.configure = Utils.findMethod(clazz, CONFIGURE_METHOD_NAME,
-                                          new Class[]{ Map.class });
-        }
-        catch (SecurityException se)
-        {
-            // fail early, rather than wait until
-            String msg = "Unable to gain access to '" +
-                         CONFIGURE_METHOD_NAME + "(Map)'" +
-                         " method for '" + clazz.getName() +
-                         "' under the current security manager."+
-                         "  This tool cannot be properly configured for use.";
-            throw new IllegalStateException(msg, se);
-        }
-
-        /* TODO? if we have performance issues with copyProperties,
-                 look at possibly finding and caching these common setters
-                    setContext(VelocityContext)
-                    setVelocityEngine(VelocityEngine)
-                    setLog(Log)
-                    setLocale(Locale)
-                 these four are tricky since we may not want servlet deps here
-                    setRequest(ServletRequest)
-                    setSession(HttpSession)
-                    setResponse(ServletResponse)
-                    setServletContext(ServletContext)    */
     }
 
     /**
@@ -204,7 +175,7 @@
 
     public boolean hasConfigure()
     {
-        return (this.configure != null);
+        return (getConfigure() != null);
     }
 
     /**
@@ -253,7 +224,7 @@
         {
             if (hasConfigure())
             {
-                invoke(this.configure, tool, combinedProps);
+                invoke(getConfigure(), tool, combinedProps);
             }
 
             //TODO: make this step optional?
@@ -268,6 +239,42 @@
 
 
     /***********************  protected methods *************************/
+
+    protected Method getConfigure()
+    {
+        if (this.configure == null)
+        {
+            // search for a configure(Map params) method in the class
+            try
+            {
+                this.configure = Utils.findMethod(clazz, CONFIGURE_METHOD_NAME,
+                                              new Class[]{ Map.class });
+            }
+            catch (SecurityException se)
+            {
+                // fail early, rather than wait until
+                String msg = "Unable to gain access to '" +
+                             CONFIGURE_METHOD_NAME + "(Map)'" +
+                             " method for '" + clazz.getName() +
+                             "' under the current security manager."+
+                             "  This tool cannot be properly configured for use.";
+                throw new IllegalStateException(msg, se);
+            }
+        }
+        return this.configure;
+    }
+
+    /* TODO? if we have performance issues with copyProperties,
+             look at possibly finding and caching these common setters
+                setContext(VelocityContext)
+                setVelocityEngine(VelocityEngine)
+                setLog(Log)
+                setLocale(Locale)
+             these four are tricky since we may not want servlet deps here
+                setRequest(ServletRequest)
+                setSession(HttpSession)
+                setResponse(ServletResponse)
+                setServletContext(ServletContext)    */
 
     protected Object newInstance()
     {

Modified: velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/Toolbox.java
URL: http://svn.apache.org/viewvc/velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/Toolbox.java?view=diff&rev=539557&r1=539556&r2=539557
==============================================================================
--- velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/Toolbox.java (original)
+++ velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/Toolbox.java Fri May 18 11:50:39 2007
@@ -31,9 +31,10 @@
  * @author Nathan Bubna
  * @version $Id: Toolbox.java 511959 2007-02-26 19:24:39Z nbubna $
  */
-//TODO: make this class serializable
-public class Toolbox
+public class Toolbox implements java.io.Serializable
 {
+    private static final long serialVersionUID = 888081253188664649L;
+
     private Map<String,ToolInfo> infoMap;
     private Map<String,Object> properties;
     private Map<String,Object> cache;

Modified: velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/tools/AbstractSearchTool.java
URL: http://svn.apache.org/viewvc/velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/tools/AbstractSearchTool.java?view=diff&rev=539557&r1=539556&r2=539557
==============================================================================
--- velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/tools/AbstractSearchTool.java (original)
+++ velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/tools/AbstractSearchTool.java Fri May 18 11:50:39 2007
@@ -324,13 +324,12 @@
      * the session is serialized.
      * </p>
      */
-    public class StoredResults implements java.io.Serializable
+    public static class StoredResults implements java.io.Serializable
     {
-
         /** serial version id */
-	private static final long serialVersionUID = 4503130168585978169L;
+        private static final long serialVersionUID = 4503130168585978169L;
 
-	private transient Object crit;
+        private transient Object crit;
         private transient List list;
 
         /**

Modified: velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/tools/BrowserSnifferTool.java
URL: http://svn.apache.org/viewvc/velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/tools/BrowserSnifferTool.java?view=diff&rev=539557&r1=539556&r2=539557
==============================================================================
--- velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/tools/BrowserSnifferTool.java (original)
+++ velocity/tools/branches/2.x/src/main/java/org/apache/velocity/tools/view/tools/BrowserSnifferTool.java Fri May 18 11:50:39 2007
@@ -61,8 +61,10 @@
  */
 @DefaultKey("browser")
 @InvalidScope("application")
-public class BrowserSnifferTool
+public class BrowserSnifferTool implements java.io.Serializable
 {
+    private static final long serialVersionUID = 1734529350532353339L;
+
     private String userAgent = null;
     private String version = null;
     private int majorVersion = -1;