Author: markt Date: Fri Sep 8 11:12:13 2017 New Revision: 1807713 URL: http://svn.apache.org/viewvc?rev=1807713&view=rev Log: Make SSLHostConfig Serializable again Spotted by FindBugs but add a test case to ensure the expected behaviour.
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLConfCmd.java tomcat/trunk/test/org/apache/tomcat/util/net/TestSSLHostConfig.java Modified: tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java?rev=1807713&r1=1807712&r2=1807713&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLConf.java Fri Sep 8 11:12:13 2017 @@ -16,6 +16,7 @@ */ package org.apache.tomcat.util.net.openssl; +import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -24,7 +25,9 @@ import org.apache.juli.logging.LogFactor import org.apache.tomcat.jni.SSLConf; import org.apache.tomcat.util.res.StringManager; -public class OpenSSLConf { +public class OpenSSLConf implements Serializable { + + private static final long serialVersionUID = 1L; private static final Log log = LogFactory.getLog(OpenSSLConf.class); private static final StringManager sm = StringManager.getManager(OpenSSLConf.class); Modified: tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLConfCmd.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLConfCmd.java?rev=1807713&r1=1807712&r2=1807713&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLConfCmd.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/openssl/OpenSSLConfCmd.java Fri Sep 8 11:12:13 2017 @@ -16,7 +16,11 @@ */ package org.apache.tomcat.util.net.openssl; -public class OpenSSLConfCmd { +import java.io.Serializable; + +public class OpenSSLConfCmd implements Serializable { + + private static final long serialVersionUID = 1L; private String name = null; private String value = null; Modified: tomcat/trunk/test/org/apache/tomcat/util/net/TestSSLHostConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/net/TestSSLHostConfig.java?rev=1807713&r1=1807712&r2=1807713&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/tomcat/util/net/TestSSLHostConfig.java (original) +++ tomcat/trunk/test/org/apache/tomcat/util/net/TestSSLHostConfig.java Fri Sep 8 11:12:13 2017 @@ -16,9 +16,18 @@ */ package org.apache.tomcat.util.net; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.List; + import org.junit.Assert; import org.junit.Test; +import org.apache.tomcat.util.net.openssl.OpenSSLConf; +import org.apache.tomcat.util.net.openssl.OpenSSLConfCmd; import org.apache.tomcat.util.net.openssl.ciphers.Cipher; public class TestSSLHostConfig { @@ -65,4 +74,39 @@ public class TestSSLHostConfig { hc.setCiphers(c.getOpenSSLAlias()); Assert.assertEquals(c.getOpenSSLAlias(), hc.getCiphers()); } + + + @Test + public void testSerialization() throws IOException, ClassNotFoundException { + // Dummy OpenSSL command name/value pair + String name = "foo"; + String value = "bar"; + + // Set up the object + SSLHostConfig sslHostConfig = new SSLHostConfig(); + OpenSSLConf openSSLConf = new OpenSSLConf(); + OpenSSLConfCmd openSSLConfCmd = new OpenSSLConfCmd(); + openSSLConfCmd.setName(name); + openSSLConfCmd.setValue(value); + openSSLConf.addCmd(openSSLConfCmd); + sslHostConfig.setOpenSslConf(openSSLConf); + + // Serialize + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos); + oos.writeObject(sslHostConfig); + oos.close(); + + // Deserialize + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + ObjectInputStream ois = new ObjectInputStream(bais); + SSLHostConfig output = (SSLHostConfig) ois.readObject(); + + // Check values + List<OpenSSLConfCmd> commands = output.getOpenSslConf().getCommands(); + Assert.assertEquals(1, commands.size()); + OpenSSLConfCmd command = commands.get(0); + Assert.assertEquals(name, command.getName()); + Assert.assertEquals(value, command.getValue()); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org