mkalen      2005/03/11 03:27:51

  Modified:    src/java/org/apache/ojb/broker/accesslayer Tag:
                        OJB_1_0_RELEASE ConnectionFactoryPooledImpl.java
               src/java/org/apache/ojb/broker/metadata Tag: OJB_1_0_RELEASE
                        ClassDescriptor.java
               src/java/org/apache/ojb/broker/platforms Tag:
                        OJB_1_0_RELEASE PlatformFactory.java
               src/java/org/apache/ojb/broker/util/dbhandling Tag:
                        OJB_1_0_RELEASE DBHandlingTask.java
               src/java/org/apache/ojb/broker/util Tag: OJB_1_0_RELEASE
                        ClassHelper.java
               src/java/org/apache/ojb/jdo/jdoql Tag: OJB_1_0_RELEASE
                        Type.java
  Log:
  As suggested by Andres Clute: to avoid problems in J2EE-environments, always 
use the ClassLoader as specified by the semantics of ClassHelper. Add system 
default class loader as last resort in ClassHelper (thread's loader is null in 
some JNI scenarios).
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.15.2.2  +2 -1      
db-ojb/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryPooledImpl.java
  
  Index: ConnectionFactoryPooledImpl.java
  ===================================================================
  RCS file: 
/home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/ConnectionFactoryPooledImpl.java,v
  retrieving revision 1.15.2.1
  retrieving revision 1.15.2.2
  diff -u -r1.15.2.1 -r1.15.2.2
  --- ConnectionFactoryPooledImpl.java  17 Feb 2005 13:47:18 -0000      1.15.2.1
  +++ ConnectionFactoryPooledImpl.java  11 Mar 2005 11:27:47 -0000      1.15.2.2
  @@ -190,6 +190,7 @@
               }
               try
               {
  +                // TODO: mkalen: use prepared statement!
                   stmt = conn.createStatement();
                   rset = stmt.executeQuery(query);
                   if (rset.next())
  
  
  
  No                   revision
  No                   revision
  1.88.2.10 +2 -2      
db-ojb/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java
  
  Index: ClassDescriptor.java
  ===================================================================
  RCS file: 
/home/cvs/db-ojb/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java,v
  retrieving revision 1.88.2.9
  retrieving revision 1.88.2.10
  diff -u -r1.88.2.9 -r1.88.2.10
  --- ClassDescriptor.java      4 Mar 2005 18:02:07 -0000       1.88.2.9
  +++ ClassDescriptor.java      11 Mar 2005 11:27:50 -0000      1.88.2.10
  @@ -1913,7 +1913,7 @@
           {
               try
               {
  -                Class clazz = Class.forName(newClass);
  +                Class clazz = ClassHelper.getClass(newClass);
                   setFactoryClass(clazz);
               }
               catch (Exception e)
  
  
  
  No                   revision
  No                   revision
  1.6.2.1   +2 -1      
db-ojb/src/java/org/apache/ojb/broker/platforms/PlatformFactory.java
  
  Index: PlatformFactory.java
  ===================================================================
  RCS file: 
/home/cvs/db-ojb/src/java/org/apache/ojb/broker/platforms/PlatformFactory.java,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -u -r1.6 -r1.6.2.1
  --- PlatformFactory.java      4 Apr 2004 23:53:35 -0000       1.6
  +++ PlatformFactory.java      11 Mar 2005 11:27:50 -0000      1.6.2.1
  @@ -17,6 +17,7 @@
   
   import org.apache.ojb.broker.metadata.JdbcConnectionDescriptor;
   import org.apache.ojb.broker.util.logging.LoggerFactory;
  +import org.apache.ojb.broker.util.ClassHelper;
   
   import java.util.HashMap;
   
  @@ -49,7 +50,7 @@
               try
               {
                   platformName = getClassnameFor(dbms);
  -                Class platformClass = Class.forName(platformName);
  +                Class platformClass = ClassHelper.getClass(platformName);
                   result = (Platform) platformClass.newInstance();
   
               }
  
  
  
  No                   revision
  No                   revision
  1.1.2.1   +2 -1      
db-ojb/src/java/org/apache/ojb/broker/util/dbhandling/Attic/DBHandlingTask.java
  
  Index: DBHandlingTask.java
  ===================================================================
  RCS file: 
/home/cvs/db-ojb/src/java/org/apache/ojb/broker/util/dbhandling/Attic/DBHandlingTask.java,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -u -r1.1 -r1.1.2.1
  --- DBHandlingTask.java       17 Jun 2004 19:50:19 -0000      1.1
  +++ DBHandlingTask.java       11 Mar 2005 11:27:50 -0000      1.1.2.1
  @@ -22,6 +22,7 @@
   
   import org.apache.ojb.broker.PBKey;
   import org.apache.ojb.broker.PersistenceBrokerFactory;
  +import org.apache.ojb.broker.util.ClassHelper;
   import org.apache.ojb.broker.metadata.ConnectionRepository;
   import org.apache.ojb.broker.metadata.MetadataManager;
   import org.apache.tools.ant.*;
  @@ -251,7 +252,7 @@
               String className     = "org.apache.ojb.broker.platforms."+
                                                   
Character.toTitleCase(_handling.charAt(0))+_handling.substring(1)+
                                                   "DBHandling";
  -            Class  handlingClass = Class.forName(className);
  +            Class  handlingClass = ClassHelper.getClass(className);
   
               return (DBHandling)handlingClass.newInstance();
           }
  
  
  
  No                   revision
  No                   revision
  1.10.2.2  +24 -3     
db-ojb/src/java/org/apache/ojb/broker/util/ClassHelper.java
  
  Index: ClassHelper.java
  ===================================================================
  RCS file: 
/home/cvs/db-ojb/src/java/org/apache/ojb/broker/util/ClassHelper.java,v
  retrieving revision 1.10.2.1
  retrieving revision 1.10.2.2
  diff -u -r1.10.2.1 -r1.10.2.2
  --- ClassHelper.java  28 Sep 2004 14:57:29 -0000      1.10.2.1
  +++ ClassHelper.java  11 Mar 2005 11:27:51 -0000      1.10.2.2
  @@ -69,13 +69,34 @@
       /**
        * Returns the class loader currently used by OJB. Defaults to the class 
loader of
        * the current thread 
(<code>Thread.currentThread().getContextClassLoader()</code>)
  -     * if not set differently.
  +     * if not set differently. If class loader is not explicitly set and the 
loader for
  +     * the current thread context is null, the JVM default class loader will 
be used.
        * 
        * @return The classloader used by OJB
  +     * @see #setClassLoader(ClassLoader)
        */
       public static ClassLoader getClassLoader()
       {
  -        return _classLoader == null ? 
Thread.currentThread().getContextClassLoader() : _classLoader;
  +        final ClassLoader ojbClassLoader;
  +        if (_classLoader != null)
  +        {
  +            ojbClassLoader = _classLoader;
  +        }
  +        else
  +        {
  +            final ClassLoader threadCtxtClassLoader;
  +            threadCtxtClassLoader = 
Thread.currentThread().getContextClassLoader();
  +            if (threadCtxtClassLoader == null)
  +            {
  +                // mkalen: happens only in "obscure" situations using JNI, 
revert to system CL
  +                ojbClassLoader = ClassLoader.getSystemClassLoader();
  +            }
  +            else
  +            {
  +                ojbClassLoader = threadCtxtClassLoader;
  +            }
  +        }
  +        return ojbClassLoader;
       }
   
       /**
  
  
  
  No                   revision
  No                   revision
  1.3.2.1   +4 -1      db-ojb/src/java/org/apache/ojb/jdo/jdoql/Type.java
  
  Index: Type.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/jdo/jdoql/Type.java,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -u -r1.3 -r1.3.2.1
  --- Type.java 23 May 2004 12:02:29 -0000      1.3
  +++ Type.java 11 Mar 2005 11:27:51 -0000      1.3.2.1
  @@ -1,5 +1,7 @@
   package org.apache.ojb.jdo.jdoql;
   
  +import org.apache.ojb.broker.util.ClassHelper;
  +
   /* Copyright 2003-2004 The Apache Software Foundation
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
  @@ -48,9 +50,10 @@
        */
       private void resolvePrimitiveType()
       {
  +        final ClassLoader loader = ClassHelper.getClassLoader();
           try
           {
  -            _type = Class.forName(_name);
  +            _type = Class.forName(_name, true, loader);
           }
           catch (ClassNotFoundException ex)
           {
  
  
  

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

Reply via email to