Author: markt
Date: Sun Jan  6 14:53:15 2008
New Revision: 609456

URL: http://svn.apache.org/viewvc?rev=609456&view=rev
Log:
Fix bug 44084. JASSRealm is broken for application provided Principals. Patch 
provided by Noah Levitt.

Modified:
    
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/realm/JAASRealm.java
    tomcat/container/tc5.5.x/webapps/docs/changelog.xml
    tomcat/current/tc5.5.x/STATUS.txt

Modified: 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/realm/JAASRealm.java
URL: 
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/realm/JAASRealm.java?rev=609456&r1=609455&r2=609456&view=diff
==============================================================================
--- 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/realm/JAASRealm.java
 (original)
+++ 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/realm/JAASRealm.java
 Sun Jan  6 14:53:15 2008
@@ -250,7 +250,6 @@
       */
      public void setRoleClassNames(String roleClassNames) {
          this.roleClassNames = roleClassNames;
-         parseClassNames(roleClassNames, roleClasses);
      }
      
      /**
@@ -264,12 +263,17 @@
      protected void parseClassNames(String classNamesString, List 
classNamesList) {
          classNamesList.clear();
          if (classNamesString == null) return;
-         
+
+         ClassLoader loader = this.getClass().getClassLoader();
+         if (isUseContextClassLoader())
+             loader = Thread.currentThread().getContextClassLoader();
+
          String[] classNames = classNamesString.split("[ ]*,[ ]*");
          for (int i=0; i<classNames.length; i++) {
              if (classNames[i].length()==0) continue;        
              try {
-                 Class principalClass = Class.forName(classNames[i]);
+                 Class principalClass = Class.forName(classNames[i], false,
+                         loader);
                  if (Principal.class.isAssignableFrom(principalClass)) {
                      classNamesList.add(classNames[i]);
                  } else {
@@ -302,7 +306,6 @@
      */
     public void setUserClassNames(String userClassNames) {
         this.userClassNames = userClassNames;
-        parseClassNames(userClassNames, userClasses);
     }
 
 
@@ -335,9 +338,10 @@
         // What if the LoginModule is in the container class loader ?
         ClassLoader ocl = null;
 
-        if (isUseContextClassLoader()) {
-          ocl=Thread.currentThread().getContextClassLoader();
-          
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
+        if (!isUseContextClassLoader()) {
+            ocl=Thread.currentThread().getContextClassLoader();
+            Thread.currentThread().setContextClassLoader(
+                    this.getClass().getClassLoader());
         }
 
         try {
@@ -348,7 +352,7 @@
             log.error(sm.getString("jaasRealm.unexpectedError"), e);
             return (null);
         } finally {
-            if( isUseContextClassLoader()) {
+            if(!isUseContextClassLoader()) {
               Thread.currentThread().setContextClassLoader(ocl);
             }
         }
@@ -547,6 +551,10 @@
         // Perform normal superclass initialization
         super.start();
 
+        // These need to be called after loading configuration, in case
+        // useContextClassLoader appears after them in xml config
+        parseClassNames(userClassNames, userClasses);
+        parseClassNames(roleClassNames, roleClasses);
     }
 
 

Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?rev=609456&r1=609455&r2=609456&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Sun Jan  6 14:53:15 2008
@@ -112,6 +112,10 @@
         <bug>44041</bug>: Fix duplicate class definition error under load.
         (markt)
       </fix>
+      <fix>
+        <bug>44084</bug>: JASSRealm is broken for application provided
+        Principals. Patch provided by Noah Levitt. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Jasper" >

Modified: tomcat/current/tc5.5.x/STATUS.txt
URL: 
http://svn.apache.org/viewvc/tomcat/current/tc5.5.x/STATUS.txt?rev=609456&r1=609455&r2=609456&view=diff
==============================================================================
--- tomcat/current/tc5.5.x/STATUS.txt (original)
+++ tomcat/current/tc5.5.x/STATUS.txt Sun Jan  6 14:53:15 2008
@@ -47,12 +47,6 @@
   -1:
    0: fhanik, this needs to be reworked completely, so I'm neutral
 
-* Fix http://issues.apache.org/bugzilla/show_bug.cgi?id=44084
-  JASSRealm is broken for application provided Principals
-  http://svn.apache.org/viewvc?rev=606621&view=rev
-  +1: markt, pero,fhanik
-  -1: 
-
 * Fix http://issues.apache.org/bugzilla/show_bug.cgi?id=43914
   Location headers must be encoded. Patch provided by Ivan Todoroski.
   http://svn.apache.org/viewvc?rev=606952&view=rev



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

Reply via email to