Return-Path: X-Original-To: apmail-cayenne-commits-archive@www.apache.org Delivered-To: apmail-cayenne-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6F64CD300 for ; Fri, 9 Nov 2012 14:40:40 +0000 (UTC) Received: (qmail 63570 invoked by uid 500); 9 Nov 2012 14:40:40 -0000 Delivered-To: apmail-cayenne-commits-archive@cayenne.apache.org Received: (qmail 63555 invoked by uid 500); 9 Nov 2012 14:40:40 -0000 Mailing-List: contact commits-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cayenne.apache.org Delivered-To: mailing list commits@cayenne.apache.org Received: (qmail 63544 invoked by uid 99); 9 Nov 2012 14:40:39 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 09 Nov 2012 14:40:39 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 09 Nov 2012 14:40:38 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id EC65823889D7 for ; Fri, 9 Nov 2012 14:40:17 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1407473 - in /cayenne/main/trunk/framework/cayenne-tools: ./ src/main/java/org/apache/cayenne/tools/ src/test/java/org/apache/cayenne/tools/ Date: Fri, 09 Nov 2012 14:40:17 -0000 To: commits@cayenne.apache.org From: aadamchik@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20121109144017.EC65823889D7@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: aadamchik Date: Fri Nov 9 14:40:16 2012 New Revision: 1407473 URL: http://svn.apache.org/viewvc?rev=1407473&view=rev Log: CAY-1758 cdbimport improvements: Default adapter (if none specified) must be AutoAdapter, not JdbcAdapter switching the ant tasks Modified: cayenne/main/trunk/framework/cayenne-tools/pom.xml cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneTask.java cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java cayenne/main/trunk/framework/cayenne-tools/src/test/java/org/apache/cayenne/tools/DbGeneratorTaskTest.java Modified: cayenne/main/trunk/framework/cayenne-tools/pom.xml URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/pom.xml?rev=1407473&r1=1407472&r2=1407473&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-tools/pom.xml (original) +++ cayenne/main/trunk/framework/cayenne-tools/pom.xml Fri Nov 9 14:40:16 2012 @@ -1,150 +1,149 @@ - - - - - - cayenne-parent - org.apache.cayenne - 3.2M1-SNAPSHOT + + + + + + cayenne-parent + org.apache.cayenne + 3.2M1-SNAPSHOT ../../pom.xml - + - 4.0.0 + 4.0.0 - cayenne-tools - jar - Cayenne Tools - - - junit - junit - - - + cayenne-tools + jar + Cayenne Tools + + + junit + junit + + + org.apache.cayenne.build-tools cayenne-test-utilities ${project.version} test - - ant - ant - - - - commons-collections - commons-collections - - - - commons-logging - commons-logging - - - - commons-dbcp - commons-dbcp - compile - - - - commons-pool - commons-pool - compile - - - - org.apache.velocity - velocity - - - - org.apache.cayenne.unpublished - cayenne-legal-unpublished - ${project.version} - provided - - - - org.apache.cayenne.unpublished - cayenne-jdk1.5-unpublished - ${project.version} - provided - - - - org.apache.cayenne - cayenne-project - ${project.version} - - - - foundrylogic.vpp - vpp - - - - net.java.dev.inflector - inflector - - - - - - - - maven-remote-resources-plugin - - - - process - - process-resources - - - ${project.build.directory}/classes - - - - org.apache.cayenne.unpublished:cayenne-legal-unpublished:${project.version} - - - - - - - - maven-source-plugin - - - bundle-source-jar - package - - jar - - - - - + + org.mockito + mockito-all + test + + + + ant + ant + + + + commons-collections + commons-collections + + + + commons-logging + commons-logging + + + + commons-dbcp + commons-dbcp + compile + + + + commons-pool + commons-pool + compile + + + + org.apache.velocity + velocity + + + + org.apache.cayenne.unpublished + cayenne-legal-unpublished + ${project.version} + provided + + + + org.apache.cayenne.unpublished + cayenne-jdk1.5-unpublished + ${project.version} + provided + + + + org.apache.cayenne + cayenne-project + ${project.version} + + + + foundrylogic.vpp + vpp + + + + net.java.dev.inflector + inflector + + + + + + + + maven-remote-resources-plugin + + + + process + + process-resources + + + ${project.build.directory}/classes + + + + org.apache.cayenne.unpublished:cayenne-legal-unpublished:${project.version} + + + + + + + + maven-source-plugin + + + bundle-source-jar + package + + jar + + + + + - + \ No newline at end of file Modified: cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneTask.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneTask.java?rev=1407473&r1=1407472&r2=1407473&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneTask.java (original) +++ cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/CayenneTask.java Fri Nov 9 14:40:16 2012 @@ -21,9 +21,12 @@ package org.apache.cayenne.tools; import java.io.File; +import javax.sql.DataSource; + +import org.apache.cayenne.configuration.DataNodeDescriptor; import org.apache.cayenne.configuration.ToolModule; +import org.apache.cayenne.configuration.server.DbAdapterFactory; import org.apache.cayenne.dba.DbAdapter; -import org.apache.cayenne.di.AdhocObjectFactory; import org.apache.cayenne.di.DIBootstrap; import org.apache.cayenne.di.Injector; import org.apache.cayenne.map.DataMap; @@ -42,7 +45,7 @@ import org.xml.sax.InputSource; public abstract class CayenneTask extends Task { protected Path classpath; - protected DbAdapter adapter; + protected String adapter; protected File map; protected String driver; protected String url; @@ -100,13 +103,7 @@ public abstract class CayenneTask extend * The db adapter to set. */ public void setAdapter(String adapter) { - if (adapter != null) { - Injector injector = DIBootstrap.createInjector(new ToolModule()); - AdhocObjectFactory objectFactory = injector - .getInstance(AdhocObjectFactory.class); - - this.adapter = objectFactory.newInstance(DbAdapter.class, adapter); - } + this.adapter = adapter; } /** @@ -131,9 +128,6 @@ public abstract class CayenneTask extend /** * Sets the username used to connect to the database server. - * - * @param username - * The username to set. */ public void setUserName(String username) { this.userName = username; @@ -154,4 +148,20 @@ public abstract class CayenneTask extend InputSource in = new InputSource(map.getCanonicalPath()); return new MapLoader().loadDataMap(in); } + + protected Injector getInjector() { + return DIBootstrap.createInjector(new ToolModule()); + } + + protected DbAdapter getAdapter(Injector injector, DataSource dataSource) + throws Exception { + + DbAdapterFactory adapterFactory = injector + .getInstance(DbAdapterFactory.class); + + DataNodeDescriptor nodeDescriptor = new DataNodeDescriptor(); + nodeDescriptor.setAdapterType(adapter); + + return adapterFactory.createAdapter(nodeDescriptor, dataSource); + } } Modified: cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java?rev=1407473&r1=1407472&r2=1407473&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java (original) +++ cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbGeneratorTask.java Fri Nov 9 14:40:16 2012 @@ -26,8 +26,6 @@ import org.apache.cayenne.access.DbGener import org.apache.cayenne.configuration.ToolModule; import org.apache.cayenne.conn.DriverDataSource; import org.apache.cayenne.dba.DbAdapter; -import org.apache.cayenne.dba.JdbcAdapter; -import org.apache.cayenne.di.AdhocObjectFactory; import org.apache.cayenne.di.DIBootstrap; import org.apache.cayenne.di.Injector; import org.apache.cayenne.log.NoopJdbcEventLogger; @@ -38,8 +36,8 @@ import org.apache.tools.ant.BuildExcepti import org.apache.tools.ant.Project; /** - * An Ant Task that is a frontend to Cayenne DbGenerator allowing schema generation from - * DataMap using Ant. + * An Ant Task that is a frontend to Cayenne DbGenerator allowing schema + * generation from DataMap using Ant. * * @since 1.2 */ @@ -58,29 +56,14 @@ public class DbGeneratorTask extends Cay public void execute() { Injector injector = DIBootstrap.createInjector(new ToolModule()); - AdhocObjectFactory objectFactory = injector.getInstance(AdhocObjectFactory.class); - - // prepare defaults - if (adapter == null) { - adapter = objectFactory.newInstance( - DbAdapter.class, - JdbcAdapter.class.getName()); - } 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), + 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(); @@ -93,11 +76,15 @@ public class DbGeneratorTask extends Cay // Load the data map and run the db generator. DataMap dataMap = loadDataMap(); - DbGenerator generator = new DbGenerator( - adapter, - dataMap, - Collections. emptyList(), - null, + + // load driver taking custom CLASSPATH into account... + DriverDataSource dataSource = new DriverDataSource((Driver) Class + .forName(driver).newInstance(), url, userName, password); + + DbAdapter adapter = getAdapter(injector, dataSource); + + DbGenerator generator = new DbGenerator(adapter, dataMap, + Collections. emptyList(), null, NoopJdbcEventLogger.getInstance()); generator.setShouldCreateFKConstraints(createFK); generator.setShouldCreatePKSupport(createPK); @@ -105,13 +92,8 @@ public class DbGeneratorTask extends Cay generator.setShouldDropPKSupport(dropPK); generator.setShouldDropTables(dropTables); - // load driver taking custom CLASSPATH into account... - DriverDataSource dataSource = new DriverDataSource((Driver) Class.forName( - driver).newInstance(), url, userName, password); - generator.runGenerator(dataSource); - } - catch (Exception ex) { + } catch (Exception ex) { Throwable th = Util.unwindException(ex); String message = "Error generating database"; @@ -122,15 +104,14 @@ public class DbGeneratorTask extends Cay log(message, Project.MSG_ERR); throw new BuildException(message, th); - } - finally { + } finally { Thread.currentThread().setContextClassLoader(loader); } } /** - * Validates atttributes that are not related to internal DefaultClassGenerator. - * Throws BuildException if attributes are invalid. + * Validates atttributes that are not related to internal + * DefaultClassGenerator. Throws BuildException if attributes are invalid. */ protected void validateAttributes() throws BuildException { StringBuilder error = new StringBuilder(""); Modified: cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java?rev=1407473&r1=1407472&r2=1407473&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java (original) +++ cayenne/main/trunk/framework/cayenne-tools/src/main/java/org/apache/cayenne/tools/DbImporterTask.java Fri Nov 9 14:40:16 2012 @@ -26,6 +26,8 @@ import org.apache.cayenne.CayenneExcepti import org.apache.cayenne.access.AbstractDbLoaderDelegate; import org.apache.cayenne.access.DbLoader; import org.apache.cayenne.conn.DriverDataSource; +import org.apache.cayenne.dba.DbAdapter; +import org.apache.cayenne.di.Injector; import org.apache.cayenne.map.DataMap; import org.apache.cayenne.map.DbEntity; import org.apache.cayenne.map.ObjEntity; @@ -76,6 +78,9 @@ public class DbImporterTask extends Caye DriverDataSource dataSource = new DriverDataSource((Driver) Class .forName(driver).newInstance(), url, userName, password); + Injector injector = getInjector(); + DbAdapter adapter = getAdapter(injector, dataSource); + // Load the data map and run the db importer. final LoaderDelegate loaderDelegate = new LoaderDelegate(); final DbLoader loader = new DbLoader(dataSource.getConnection(), @@ -101,7 +106,8 @@ public class DbImporterTask extends Caye } if (importProcedures) { - loader.loadProcedures(dataMap, catalog, schema, procedurePattern); + loader.loadProcedures(dataMap, catalog, schema, + procedurePattern); } // Write the new DataMap out to disk. Modified: cayenne/main/trunk/framework/cayenne-tools/src/test/java/org/apache/cayenne/tools/DbGeneratorTaskTest.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-tools/src/test/java/org/apache/cayenne/tools/DbGeneratorTaskTest.java?rev=1407473&r1=1407472&r2=1407473&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-tools/src/test/java/org/apache/cayenne/tools/DbGeneratorTaskTest.java (original) +++ cayenne/main/trunk/framework/cayenne-tools/src/test/java/org/apache/cayenne/tools/DbGeneratorTaskTest.java Fri Nov 9 14:40:16 2012 @@ -19,9 +19,18 @@ package org.apache.cayenne.tools; +import static org.mockito.Mockito.mock; + +import javax.sql.DataSource; + import junit.framework.TestCase; +import org.apache.cayenne.configuration.ToolModule; +import org.apache.cayenne.dba.AutoAdapter; +import org.apache.cayenne.dba.DbAdapter; import org.apache.cayenne.dba.sqlserver.SQLServerAdapter; +import org.apache.cayenne.di.DIBootstrap; +import org.apache.cayenne.di.Injector; public class DbGeneratorTaskTest extends TestCase { @@ -38,9 +47,19 @@ public class DbGeneratorTaskTest extends } public void testSetAdapter() throws Exception { + DataSource ds = mock(DataSource.class); + Injector injector = DIBootstrap.createInjector(new ToolModule()); + DbGeneratorTask task = new DbGeneratorTask(); + + DbAdapter autoAdapter = task.getAdapter(injector, ds); + assertTrue(autoAdapter instanceof AutoAdapter); + + task.setAdapter(SQLServerAdapter.class.getName()); - assertTrue(task.adapter instanceof SQLServerAdapter); + + DbAdapter sqlServerAdapter = task.getAdapter(injector, ds); + assertTrue(sqlServerAdapter instanceof SQLServerAdapter); } public void testSetUrl() throws Exception {