Author: markt
Date: Thu Jan  3 14:04:48 2008
New Revision: 608654

URL: http://svn.apache.org/viewvc?rev=608654&view=rev
Log:
Improve fix for 43840 with better error handling, a better variable name and a 
bit of other clean-up.

Modified:
    tomcat/trunk/java/org/apache/catalina/ha/session/LocalStrings.properties
    tomcat/trunk/java/org/apache/catalina/ha/session/SerializablePrincipal.java
    
tomcat/trunk/test/org/apache/catalina/ha/session/TestSerializablePrincipal.java

Modified: 
tomcat/trunk/java/org/apache/catalina/ha/session/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/LocalStrings.properties?rev=608654&r1=608653&r2=608654&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/session/LocalStrings.properties 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/session/LocalStrings.properties 
Thu Jan  3 14:04:48 2008
@@ -109,3 +109,4 @@
 standardSession.setAttribute.ise=setAttribute: Session already invalidated
 standardSession.setAttribute.namenull=setAttribute: name parameter cannot be 
null
 standardSession.sessionCreated=Created Session id = {0}
+serializablePrincipal.readPrincipal.cnfe=readPrincipal: Failed to recreate 
user Principal
\ No newline at end of file

Modified: 
tomcat/trunk/java/org/apache/catalina/ha/session/SerializablePrincipal.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/session/SerializablePrincipal.java?rev=608654&r1=608653&r2=608654&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/session/SerializablePrincipal.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/session/SerializablePrincipal.java 
Thu Jan  3 14:04:48 2008
@@ -19,6 +19,7 @@
 package org.apache.catalina.ha.session;
 
 
+import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.io.Serializable;
@@ -30,6 +31,7 @@
 
 import org.apache.catalina.Realm;
 import org.apache.catalina.realm.GenericPrincipal;
+import org.apache.catalina.util.StringManager;
 
 
 /**
@@ -42,6 +44,14 @@
  */
 public class SerializablePrincipal  implements java.io.Serializable {
 
+    protected static org.apache.juli.logging.Log log =
+        org.apache.juli.logging.LogFactory.getLog(SerializablePrincipal.class);
+    
+    /**
+     * The string manager for this package.
+     */
+    protected static StringManager sm =
+        StringManager.getManager(Constants.Package);
 
     // ----------------------------------------------------------- Constructors
 
@@ -201,7 +211,8 @@
                 userPrincipal);
     }
     
-    public static GenericPrincipal readPrincipal(ObjectInput in, Realm realm) 
throws java.io.IOException{
+    public static GenericPrincipal readPrincipal(ObjectInput in, Realm realm)
+            throws IOException, ClassNotFoundException {
         String name = in.readUTF();
         boolean hasPwd = in.readBoolean();
         String pwd = null;
@@ -209,21 +220,23 @@
         int size = in.readInt();
         String[] roles = new String[size];
         for ( int i=0; i<size; i++ ) roles[i] = in.readUTF();
-        Principal innerPrincipal = null;
-        boolean hasInnerPrincipal = in.readBoolean();
-        if (hasInnerPrincipal) {
+        Principal userPrincipal = null;
+        boolean hasUserPrincipal = in.readBoolean();
+        if (hasUserPrincipal) {
             try {
-                innerPrincipal = (Principal) in.readObject();
+                userPrincipal = (Principal) in.readObject();
             } catch (ClassNotFoundException e) {
-                // Failed to read inner Principal
-                e.printStackTrace();
+                log.error(sm.getString(
+                        "serializablePrincipal.readPrincipal.cnfe"), e);
+                throw e;
             }
         }
         return new GenericPrincipal(realm,name,pwd,Arrays.asList(roles),
-                innerPrincipal);
+                userPrincipal);
     }
     
-    public static void writePrincipal(GenericPrincipal p, ObjectOutput out) 
throws java.io.IOException {
+    public static void writePrincipal(GenericPrincipal p, ObjectOutput out)
+            throws IOException {
         out.writeUTF(p.getName());
         out.writeBoolean(p.getPassword()!=null);
         if ( p.getPassword()!= null ) out.writeUTF(p.getPassword());
@@ -231,10 +244,10 @@
         if ( roles == null ) roles = new String[0];
         out.writeInt(roles.length);
         for ( int i=0; i<roles.length; i++ ) out.writeUTF(roles[i]);
-        boolean hasInnerPrincipal = (p != p.getUserPrincipal() &&
+        boolean hasUserPrincipal = (p != p.getUserPrincipal() &&
                 p.getUserPrincipal() instanceof Serializable);
-        out.writeBoolean(hasInnerPrincipal);
-        if (hasInnerPrincipal) out.writeObject(p.getUserPrincipal());
+        out.writeBoolean(hasUserPrincipal);
+        if (hasUserPrincipal) out.writeObject(p.getUserPrincipal());
     }
 
 

Modified: 
tomcat/trunk/test/org/apache/catalina/ha/session/TestSerializablePrincipal.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/ha/session/TestSerializablePrincipal.java?rev=608654&r1=608653&r2=608654&view=diff
==============================================================================
--- 
tomcat/trunk/test/org/apache/catalina/ha/session/TestSerializablePrincipal.java 
(original)
+++ 
tomcat/trunk/test/org/apache/catalina/ha/session/TestSerializablePrincipal.java 
Thu Jan  3 14:04:48 2008
@@ -82,6 +82,9 @@
         } catch (IOException e) {
             e.printStackTrace();
             fail("ioe de-serializing principal");
+        } catch (ClassNotFoundException e) {
+            e.printStackTrace();
+            fail("cnfe de-serializing principal");
         }
         
         // Now test how similar original and de-serialized versions are



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to