You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2018/06/05 17:56:22 UTC

svn commit: r1832958 - in /tomcat/trunk/java/org/apache/catalina: core/ApplicationFilterConfig.java filters/CorsFilter.java filters/RemoteIpFilter.java filters/RequestDumperFilter.java

Author: markt
Date: Tue Jun  5 17:56:22 2018
New Revision: 1832958

URL: http://svn.apache.org/viewvc?rev=1832958&view=rev
Log:
Making Log instances non-static triggered a few SpotBugs warnings around Serialization. Fix them.

Modified:
    tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java
    tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java
    tomcat/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java
    tomcat/trunk/java/org/apache/catalina/filters/RequestDumperFilter.java

Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java?rev=1832958&r1=1832957&r2=1832958&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/ApplicationFilterConfig.java Tue Jun  5 17:56:22 2018
@@ -14,11 +14,11 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-
 package org.apache.catalina.core;
 
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
 import java.io.Serializable;
 import java.util.Collections;
 import java.util.Enumeration;
@@ -61,7 +61,7 @@ public final class ApplicationFilterConf
     static final StringManager sm =
         StringManager.getManager(Constants.Package);
 
-    private final Log log = LogFactory.getLog(ApplicationFilterConfig.class); // must not be static
+    private transient Log log = LogFactory.getLog(ApplicationFilterConfig.class); // must not be static
 
     /**
      * Empty String collection to serve as the basis for empty enumerations.
@@ -403,4 +403,14 @@ public final class ApplicationFilterConf
         }
 
     }
+
+
+    /*
+     * Log objects are not Serializable.
+     */
+    private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
+        ois.defaultReadObject();
+        log = LogFactory.getLog(ApplicationFilterConfig.class);
+    }
+
 }

Modified: tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java?rev=1832958&r1=1832957&r2=1832958&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java (original)
+++ tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java Tue Jun  5 17:56:22 2018
@@ -17,6 +17,7 @@
 package org.apache.catalina.filters;
 
 import java.io.IOException;
+import java.io.ObjectInputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.Arrays;
@@ -79,9 +80,10 @@ import org.apache.tomcat.util.res.String
 public class CorsFilter extends GenericFilter {
 
     private static final long serialVersionUID = 1L;
-    private final Log log = LogFactory.getLog(CorsFilter.class); // must not be static
     private static final StringManager sm = StringManager.getManager(CorsFilter.class);
 
+    private transient Log log = LogFactory.getLog(CorsFilter.class); // must not be static
+
 
     /**
      * A {@link Collection} of origins consisting of zero or more origins that
@@ -909,7 +911,19 @@ public class CorsFilter extends GenericF
     }
 
 
+    /*
+     * Log objects are not Serializable but this Filter is because it extends
+     * GenericFilter. Tomcat won't serialize a Filter but in case something else
+     * does...
+     */
+    private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
+        ois.defaultReadObject();
+        log = LogFactory.getLog(CorsFilter.class);
+    }
+
+
     // -------------------------------------------------- CORS Response Headers
+
     /**
      * The Access-Control-Allow-Origin header indicates whether a resource can
      * be shared based by returning the value of the Origin request header in

Modified: tomcat/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java?rev=1832958&r1=1832957&r2=1832958&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java (original)
+++ tomcat/trunk/java/org/apache/catalina/filters/RemoteIpFilter.java Tue Jun  5 17:56:22 2018
@@ -17,6 +17,7 @@
 package org.apache.catalina.filters;
 
 import java.io.IOException;
+import java.io.ObjectInputStream;
 import java.text.DateFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -656,7 +657,7 @@ public class RemoteIpFilter extends Gene
 
     // Log must be non-static as loggers are created per class-loader and this
     // Filter may be used in multiple class loaders
-    private final Log log = LogFactory.getLog(RemoteIpFilter.class); // must not be static
+    private transient Log log = LogFactory.getLog(RemoteIpFilter.class);
 
     protected static final String PROTOCOL_HEADER_PARAMETER = "protocolHeader";
 
@@ -1181,4 +1182,15 @@ public class RemoteIpFilter extends Gene
             this.trustedProxies = Pattern.compile(trustedProxies);
         }
     }
+
+
+    /*
+     * Log objects are not Serializable but this Filter is because it extends
+     * GenericFilter. Tomcat won't serialize a Filter but in case something else
+     * does...
+     */
+    private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
+        ois.defaultReadObject();
+        log = LogFactory.getLog(RemoteIpFilter.class);
+    }
 }

Modified: tomcat/trunk/java/org/apache/catalina/filters/RequestDumperFilter.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/filters/RequestDumperFilter.java?rev=1832958&r1=1832957&r2=1832958&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/filters/RequestDumperFilter.java (original)
+++ tomcat/trunk/java/org/apache/catalina/filters/RequestDumperFilter.java Tue Jun  5 17:56:22 2018
@@ -17,6 +17,7 @@
 package org.apache.catalina.filters;
 
 import java.io.IOException;
+import java.io.ObjectInputStream;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Enumeration;
@@ -66,7 +67,7 @@ public class RequestDumperFilter extends
 
     // Log must be non-static as loggers are created per class-loader and this
     // Filter may be used in multiple class loaders
-    private final Log log = LogFactory.getLog(RequestDumperFilter.class); // must not be static
+    private transient Log log = LogFactory.getLog(RequestDumperFilter.class);
 
 
     /**
@@ -264,6 +265,18 @@ public class RequestDumperFilter extends
         return ts.dateString;
     }
 
+
+    /*
+     * Log objects are not Serializable but this Filter is because it extends
+     * GenericFilter. Tomcat won't serialize a Filter but in case something else
+     * does...
+     */
+    private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException {
+        ois.defaultReadObject();
+        log = LogFactory.getLog(RequestDumperFilter.class);
+    }
+
+
     private static final class Timestamp {
         private final Date date = new Date(0);
         private final SimpleDateFormat format =



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org