yoavs       2004/07/28 14:31:16

  Modified:    catalina/src/share/org/apache/catalina/realm JAASRealm.java
               webapps/docs changelog.xml
  Log:
  Addressed Bugzilla 29406, JAASRealm using context ClassLoader.
  
  Revision  Changes    Path
  1.7       +40 -5     
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/realm/JAASRealm.java
  
  Index: JAASRealm.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/realm/JAASRealm.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- JAASRealm.java    27 Feb 2004 14:58:45 -0000      1.6
  +++ JAASRealm.java    28 Jul 2004 21:31:16 -0000      1.7
  @@ -90,6 +90,7 @@
    * </ul>
    *
    * @author Craig R. McClanahan
  + * @author Yoav Shapira
    * @version $Revision$ $Date$
    */
   
  @@ -139,6 +140,13 @@
        */
       protected ArrayList userClasses = new ArrayList();
   
  +    /**
  +     * Whether to use context ClassLoader or default ClassLoader.
  +     * True means use context ClassLoader, and True is the default
  +     * value.
  +     */
  +     protected boolean useContextClassLoader = true;
  +
   
       // ------------------------------------------------------------- Properties
   
  @@ -158,6 +166,27 @@
           return appName;
       }
   
  +    /**
  +     * Sets whether to use the context or default ClassLoader.
  +     * True means use context ClassLoader.
  +     *
  +     * @param useContext True means use context ClassLoader
  +     */
  +    public void setUseContextClassLoader(boolean useContext) {
  +      useContextClassLoader = useContext;
  +      log.info("Setting useContextClassLoader = " + useContext);
  +    }
  +
  +    /**
  +     * Returns whether to use the context or default ClassLoader.
  +     * True means to use the context ClassLoader.
  +     *
  +     * @return The value of useContextClassLoader
  +     */
  +    public boolean isUseContextClassLoader() {
  +     return useContextClassLoader;
  +    } 
  +
       public void setContainer(Container container) {
           super.setContainer(container);
           String name=container.getName();
  @@ -258,9 +287,13 @@
               log.debug("Authenticating " + appName + " " +  username);
   
           // What if the LoginModule is in the container class loader ?
  -        //
  -        ClassLoader ocl=Thread.currentThread().getContextClassLoader();
  -        
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
  +        ClassLoader ocl = null;
  +
  +        if (isUseContextClassLoader()) {
  +          ocl=Thread.currentThread().getContextClassLoader();
  +          
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
  +        }
  +
           try {
               loginContext = new LoginContext
                   (appName, new JAASCallbackHandler(this, username,
  @@ -269,7 +302,9 @@
               log.error(sm.getString("jaasRealm.unexpectedError"), e);
               return (null);
           } finally {
  -            Thread.currentThread().setContextClassLoader(ocl);
  +            if( isUseContextClassLoader()) {
  +              Thread.currentThread().setContextClassLoader(ocl);
  +            }
           }
   
           if( log.isDebugEnabled())
  
  
  
  1.83      +3 -0      jakarta-tomcat-catalina/webapps/docs/changelog.xml
  
  Index: changelog.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-catalina/webapps/docs/changelog.xml,v
  retrieving revision 1.82
  retrieving revision 1.83
  diff -u -r1.82 -r1.83
  --- changelog.xml     28 Jul 2004 17:26:03 -0000      1.82
  +++ changelog.xml     28 Jul 2004 21:31:16 -0000      1.83
  @@ -49,6 +49,9 @@
         <fix>
           <bug>30144</bug>: Made SSIServlet check resource MimeType before using 
text/html and UTF-8 default. (yoavs)
         </fix>
  +      <fix>
  +        <bug>29406</bug>: Made JAASRealm configurable as to whether it should use 
the context ClassLoader or the default ClassLoader by adding a useContextClassLoader 
boolean attribute. (yoavs)
  +      </fix>
       </changelog>
     </subsection>
   
  
  
  

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

Reply via email to