You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by mk...@apache.org on 2005/03/11 12:27:51 UTC

cvs commit: db-ojb/src/java/org/apache/ojb/jdo/jdoql Type.java

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: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org