dion        2004/09/09 08:09:02

  Modified:    jelly/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql
                        DataSourceWrapper.java
               jelly/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt
                        ParseTag.java
               jelly/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define
                        BeanTag.java ClassLoaderTag.java
               jelly/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit
                        AssertThrowsTag.java
               jelly/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean
                        BeandefTag.java
  Log:
  JELLY-134 - Handle VMs that return null for getClass().getClassLoader()
  
  Revision  Changes    Path
  1.5       +2 -1      
jakarta-commons/jelly/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DataSourceWrapper.java
  
  Index: DataSourceWrapper.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/jelly/jelly-tags/sql/src/java/org/apache/commons/jelly/tags/sql/DataSourceWrapper.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DataSourceWrapper.java    9 Sep 2004 12:16:03 -0000       1.4
  +++ DataSourceWrapper.java    9 Sep 2004 15:09:01 -0000       1.5
  @@ -24,6 +24,7 @@
   import javax.sql.DataSource;
   
   import org.apache.commons.jelly.tags.Resources;
  +import org.apache.commons.jelly.util.ClassLoaderUtils;
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   
  @@ -51,7 +52,7 @@
           }
   
           this.driverClassName = driverClassName;
  -        getClass().getClassLoader().loadClass(driverClassName).newInstance();
  +        
ClassLoaderUtils.getClassLoader(getClass()).loadClass(driverClassName).newInstance();
       }
   
       public void setJdbcURL(String jdbcURL) {
  
  
  
  1.8       +2 -9      
jakarta-commons/jelly/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/ParseTag.java
  
  Index: ParseTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/jelly/jelly-tags/betwixt/src/java/org/apache/commons/jelly/tags/betwixt/ParseTag.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ParseTag.java     9 Sep 2004 12:07:06 -0000       1.7
  +++ ParseTag.java     9 Sep 2004 15:09:01 -0000       1.8
  @@ -26,6 +26,7 @@
   import org.apache.commons.jelly.MissingAttributeException;
   import org.apache.commons.jelly.TagSupport;
   import org.apache.commons.jelly.XMLOutput;
  +import org.apache.commons.jelly.util.ClassLoaderUtils;
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  @@ -201,14 +202,6 @@
        * @return the ClassLoader to be used to load bean classes.
        */
       protected ClassLoader getClassLoader() {
  -        if ( classLoader != null ) {
  -            return classLoader;
  -        }
  -        if ( useContextClassLoader ) {
  -            return Thread.currentThread().getContextClassLoader();
  -        }
  -        else {
  -            return getClass().getClassLoader();
  -        }
  +        return ClassLoaderUtils.getClassLoader(classLoader, useContextClassLoader, 
getClass());
       }
   }
  
  
  
  1.6       +12 -28    
jakarta-commons/jelly/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/BeanTag.java
  
  Index: BeanTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/jelly/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/BeanTag.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- BeanTag.java      8 Sep 2004 04:48:32 -0000       1.5
  +++ BeanTag.java      9 Sep 2004 15:09:02 -0000       1.6
  @@ -27,6 +27,7 @@
   import org.apache.commons.jelly.impl.Attribute;
   import org.apache.commons.jelly.impl.DynamicBeanTag;
   import org.apache.commons.jelly.impl.TagFactory;
  +import org.apache.commons.jelly.util.ClassLoaderUtils;
   
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
  @@ -88,25 +89,15 @@
           Class theClass = null;
           try {
               ClassLoader classLoader = getClassLoader();
  -            theClass = classLoader.loadClass(className);
  +            theClass = ClassLoaderUtils.loadClass(className, getClassLoader(), 
getContext().getUseContextClassLoader(), getClass());
           }
           catch (ClassNotFoundException e) {
  -            try {
  -                theClass = getClass().getClassLoader().loadClass(className);
  -            }
  -            catch (ClassNotFoundException e2) {
  -                try {
  -                    theClass = Class.forName(className);
  -                }
  -                catch (ClassNotFoundException e3) {
  -                    log.error( "Could not load class: " + className + " exception: 
" + e, e );
  -                    throw new JellyTagException(
  -                        "Could not find class: "
  -                            + className
  -                            + " using ClassLoader: "
  -                            + classLoader);
  -                }
  -            }
  +            log.error( "Could not load class: " + className + " exception: " + e, e 
);
  +            throw new JellyTagException(
  +                "Could not find class: "
  +                    + className
  +                    + " using ClassLoader: "
  +                    + classLoader);
           }
   
           final Class beanClass = theClass;
  @@ -153,18 +144,11 @@
       }
   
       /**
  -     * @return the ClassLoader to use to load classes
  -     *  or will use the thread context loader if none is specified.
  +     * @return the ClassLoader to use to load classes specified by this object, 
  +     *  the thread context loader if the context flag is set, or the class used to 
load this class.
        */
       public ClassLoader getClassLoader() {
  -        if ( classLoader == null ) {
  -            ClassLoader answer = Thread.currentThread().getContextClassLoader();
  -            if ( answer == null ) {
  -                answer = getClass().getClassLoader();
  -            }
  -            return answer;
  -        }
  -        return classLoader;
  +        return ClassLoaderUtils.getClassLoader(classLoader, 
getContext().getUseContextClassLoader(), getClass());
       }
   
       /**
  
  
  
  1.6       +3 -2      
jakarta-commons/jelly/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/ClassLoaderTag.java
  
  Index: ClassLoaderTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/jelly/jelly-tags/define/src/java/org/apache/commons/jelly/tags/define/ClassLoaderTag.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ClassLoaderTag.java       9 Sep 2004 12:07:23 -0000       1.5
  +++ ClassLoaderTag.java       9 Sep 2004 15:09:02 -0000       1.6
  @@ -23,6 +23,7 @@
   import org.apache.commons.jelly.JellyTagException;
   import org.apache.commons.jelly.MissingAttributeException;
   import org.apache.commons.jelly.XMLOutput;
  +import org.apache.commons.jelly.util.ClassLoaderUtils;
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   
  @@ -89,7 +90,7 @@
   
           ClassLoader parent = Thread.currentThread().getContextClassLoader();
           if (parent == null) {
  -            parent = getClass().getClassLoader();
  +            parent = ClassLoaderUtils.getClassLoader(getClass());
           }
   
           URLClassLoader newClassLoader = null;
  
  
  
  1.6       +2 -4      
jakarta-commons/jelly/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertThrowsTag.java
  
  Index: AssertThrowsTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/jelly/jelly-tags/junit/src/java/org/apache/commons/jelly/tags/junit/AssertThrowsTag.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AssertThrowsTag.java      8 Sep 2004 04:50:39 -0000       1.5
  +++ AssertThrowsTag.java      9 Sep 2004 15:09:02 -0000       1.6
  @@ -18,6 +18,7 @@
   import org.apache.commons.jelly.JellyException;
   import org.apache.commons.jelly.JellyTagException;
   import org.apache.commons.jelly.XMLOutput;
  +import org.apache.commons.jelly.util.ClassLoaderUtils;
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   
  @@ -112,10 +113,7 @@
       }
   
       public ClassLoader getClassLoader() {
  -        if (classLoader == null) {
  -            return getClass().getClassLoader();
  -        }
  -        return classLoader;
  +        return ClassLoaderUtils.getClassLoader(classLoader, 
getContext().getUseContextClassLoader(), getClass());
       }
   
       // Implementation methods
  
  
  
  1.8       +10 -29    
jakarta-commons/jelly/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeandefTag.java
  
  Index: BeandefTag.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/jelly/jelly-tags/bean/src/java/org/apache/commons/jelly/tags/bean/BeandefTag.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- BeandefTag.java   8 Sep 2004 04:40:22 -0000       1.7
  +++ BeandefTag.java   9 Sep 2004 15:09:02 -0000       1.8
  @@ -25,6 +25,7 @@
   import org.apache.commons.jelly.MissingAttributeException;
   import org.apache.commons.jelly.TagSupport;
   import org.apache.commons.jelly.XMLOutput;
  +import org.apache.commons.jelly.util.ClassLoaderUtils;
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   
  @@ -79,26 +80,13 @@
   
           Class theClass = null;
           try {
  -            ClassLoader classLoader = getClassLoader();
  -            theClass = classLoader.loadClass(className);
  -        }
  -        catch (ClassNotFoundException e) {
  -            try {
  -                theClass = getClass().getClassLoader().loadClass(className);
  -            }
  -            catch (ClassNotFoundException e2) {
  -                try {
  -                    theClass = Class.forName(className);
  -                }
  -                catch (ClassNotFoundException e3) {
  -                    log.error( "Could not load class: " + className + " exception: 
" + e, e );
  -                    throw new JellyTagException(
  -                        "Could not find class: "
  -                            + className
  -                            + " using ClassLoader: "
  -                            + classLoader);
  -                }
  -            }
  +            theClass = ClassLoaderUtils.loadClass(className, classLoader, 
getContext().getUseContextClassLoader(), getClass());
  +        } catch (ClassNotFoundException e) {
  +            log.error( "Could not load class: " + className + " exception: " + e, e 
);
  +            throw new JellyTagException("Could not find class: "
  +                    + className
  +                    + " using ClassLoader: "
  +                    + classLoader);
           }
   
           Method invokeMethod = getInvokeMethod(theClass);
  @@ -139,14 +127,7 @@
        *  or will use the thread context loader if none is specified.
        */
       public ClassLoader getClassLoader() {
  -        if ( classLoader == null ) {
  -            ClassLoader answer = Thread.currentThread().getContextClassLoader();
  -            if ( answer == null ) {
  -                answer = getClass().getClassLoader();
  -            }
  -            return answer;
  -        }
  -        return classLoader;
  +        return ClassLoaderUtils.getClassLoader(classLoader, true, getClass());
       }
   
       /**
  
  
  

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

Reply via email to