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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org