Author: markt
Date: Tue Dec 16 21:54:25 2014
New Revision: 1646105

URL: http://svn.apache.org/r1646105
Log:
Make Serializable

Modified:
    tomcat/trunk/java/org/apache/catalina/authenticator/SingleSignOnEntry.java

Modified: 
tomcat/trunk/java/org/apache/catalina/authenticator/SingleSignOnEntry.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/SingleSignOnEntry.java?rev=1646105&r1=1646104&r2=1646105&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/authenticator/SingleSignOnEntry.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/authenticator/SingleSignOnEntry.java 
Tue Dec 16 21:54:25 2014
@@ -16,6 +16,8 @@
  */
 package org.apache.catalina.authenticator;
 
+import java.io.IOException;
+import java.io.Serializable;
 import java.security.Principal;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -35,14 +37,18 @@ import org.apache.catalina.Session;
  * @see SingleSignOn
  * @see AuthenticatorBase#reauthenticateFromSSO
  */
-public class SingleSignOnEntry {
+public class SingleSignOnEntry implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
     // ------------------------------------------------------  Instance Fields
 
     protected String authType = null;
 
     protected String password = null;
 
-    protected Principal principal = null;
+    // Marked as transient so special handling can be applied to serialization
+    protected transient Principal principal = null;
 
     protected ConcurrentHashMap<SingleSignOnSessionKey,SingleSignOnSessionKey> 
sessionKeys =
             new ConcurrentHashMap<>();
@@ -176,4 +182,24 @@ public class SingleSignOnEntry {
         this.canReauthenticate = 
(HttpServletRequest.BASIC_AUTH.equals(authType) ||
                 HttpServletRequest.FORM_AUTH.equals(authType));
     }
+
+
+    private void writeObject(java.io.ObjectOutputStream out) throws 
IOException {
+        out.defaultWriteObject();
+        if (principal instanceof Serializable) {
+            out.writeBoolean(true);
+            out.writeObject(principal);
+        } else {
+            out.writeBoolean(false);
+        }
+    }
+
+    private void readObject(java.io.ObjectInputStream in) throws IOException,
+            ClassNotFoundException {
+        in.defaultReadObject();
+        boolean hasPrincipal = in.readBoolean();
+        if (hasPrincipal) {
+            principal = (Principal) in.readObject();
+        }
+    }
 }



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

Reply via email to