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