You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2009/02/11 10:56:38 UTC

svn commit: r743287 - /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java

Author: aadamchik
Date: Wed Feb 11 09:56:37 2009
New Revision: 743287

URL: http://svn.apache.org/viewvc?rev=743287&view=rev
Log:
CAY-1170 cdbgen task fails due to NPE when instantiating TypesHandler

a patch by Dima Loiko that addresses cdbgen classloader issues
can't yet reproduce the problem the way the user described it

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java?rev=743287&r1=743286&r2=743287&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java Wed Feb 11 09:56:37 2009
@@ -30,6 +30,7 @@
 import org.apache.tools.ant.Project;
 import org.xml.sax.InputSource;
 
+
 import java.io.File;
 import java.sql.Driver;
 
@@ -41,7 +42,7 @@
  */
 // TODO: support classpath attribute for loading the driver
 public class DbGeneratorTask extends CayenneTask {
-
+    
     protected DbAdapter adapter;
     protected File map;
     protected String driver;
@@ -64,14 +65,14 @@
         if (adapter == null) {
             adapter = new JdbcAdapter();
         }
-
+        
         log(String.format("connection settings - [driver: %s, url: %s, username: %s]", driver, url, userName), Project.MSG_VERBOSE);
 
         log(String.format("generator options - [dropTables: %s, dropPK: %s, createTables: %s, createPK: %s, createFK: %s]",
                 dropTables, dropPK, createTables, createPK, createFK), Project.MSG_VERBOSE);
 
         validateAttributes();
-
+        
         try {
 
             // Load the data map and run the db generator.
@@ -168,15 +169,21 @@
      * @param adapter The db adapter to set.
      */
     public void setAdapter(String adapter) {
-
+        ClassLoader loader = null;
         if (adapter != null) {
             // Try to create an instance of the DB adapter.
             try {
-                Class<?> c = Class.forName(adapter);
+                loader = Thread.currentThread().getContextClassLoader();
+                Thread.currentThread().setContextClassLoader(DbGeneratorTask.class.getClassLoader());
+
+                Class<?> c = Util.getJavaClass(adapter);
                 this.adapter = (DbAdapter) c.newInstance();
             }
             catch (Exception e) {
-                throw new BuildException("Can't load DbAdapter: " + adapter);
+                throw new BuildException("Can't load DbAdapter: " + adapter,e);
+            }
+            finally{
+                Thread.currentThread().setContextClassLoader(loader);
             }
         }
     }