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]