This is an automated email from the ASF dual-hosted git repository. ntimofeev pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/cayenne.git
commit acba82e8a59e3fff3ba4afebcb2d9f91136c35ca Author: Nikita Timofeev <stari...@gmail.com> AuthorDate: Fri Jul 1 19:19:46 2022 +0300 CAY-2737 Cayenne 4.3: cleanup deprecated code --- .../dbsync/reverse/configuration/ToolsModule.java | 53 +++++++++++++++++++--- .../org/apache/cayenne/tools/DbGenerateTask.java | 28 ++++++++---- .../org/apache/cayenne/tools/DbGeneratorMojo.java | 29 ++++++++---- 3 files changed, 85 insertions(+), 25 deletions(-) diff --git a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/configuration/ToolsModule.java b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/configuration/ToolsModule.java index 32d729701..357ed0a27 100644 --- a/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/configuration/ToolsModule.java +++ b/cayenne-dbsync/src/main/java/org/apache/cayenne/dbsync/reverse/configuration/ToolsModule.java @@ -45,19 +45,39 @@ import org.apache.cayenne.configuration.xml.XMLDataMapLoader; import org.apache.cayenne.configuration.xml.XMLReaderProvider; import org.apache.cayenne.dba.JdbcPkGenerator; import org.apache.cayenne.dba.PkGenerator; +import org.apache.cayenne.dba.db2.DB2Adapter; +import org.apache.cayenne.dba.db2.DB2PkGenerator; import org.apache.cayenne.dba.db2.DB2Sniffer; +import org.apache.cayenne.dba.derby.DerbyAdapter; +import org.apache.cayenne.dba.derby.DerbyPkGenerator; import org.apache.cayenne.dba.derby.DerbySniffer; import org.apache.cayenne.dba.firebird.FirebirdSniffer; +import org.apache.cayenne.dba.frontbase.FrontBaseAdapter; +import org.apache.cayenne.dba.frontbase.FrontBasePkGenerator; import org.apache.cayenne.dba.frontbase.FrontBaseSniffer; +import org.apache.cayenne.dba.h2.H2Adapter; +import org.apache.cayenne.dba.h2.H2PkGenerator; import org.apache.cayenne.dba.h2.H2Sniffer; import org.apache.cayenne.dba.hsqldb.HSQLDBSniffer; +import org.apache.cayenne.dba.ingres.IngresAdapter; +import org.apache.cayenne.dba.ingres.IngresPkGenerator; import org.apache.cayenne.dba.ingres.IngresSniffer; import org.apache.cayenne.dba.mariadb.MariaDBSniffer; +import org.apache.cayenne.dba.mysql.MySQLAdapter; +import org.apache.cayenne.dba.mysql.MySQLPkGenerator; import org.apache.cayenne.dba.mysql.MySQLSniffer; +import org.apache.cayenne.dba.oracle.Oracle8Adapter; +import org.apache.cayenne.dba.oracle.OracleAdapter; +import org.apache.cayenne.dba.oracle.OraclePkGenerator; import org.apache.cayenne.dba.oracle.OracleSniffer; +import org.apache.cayenne.dba.postgres.PostgresAdapter; +import org.apache.cayenne.dba.postgres.PostgresPkGenerator; import org.apache.cayenne.dba.postgres.PostgresSniffer; import org.apache.cayenne.dba.sqlite.SQLiteSniffer; +import org.apache.cayenne.dba.sqlserver.SQLServerAdapter; import org.apache.cayenne.dba.sqlserver.SQLServerSniffer; +import org.apache.cayenne.dba.sybase.SybaseAdapter; +import org.apache.cayenne.dba.sybase.SybasePkGenerator; import org.apache.cayenne.dba.sybase.SybaseSniffer; import org.apache.cayenne.di.AdhocObjectFactory; import org.apache.cayenne.di.Binder; @@ -116,15 +136,36 @@ public class ToolsModule implements Module { binder.bind(BatchTranslatorFactory.class).to(DefaultBatchTranslatorFactory.class); binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class); - ServerModule.contributeAdapterDetectors(binder).add(FirebirdSniffer.class) - .add(FrontBaseSniffer.class).add(IngresSniffer.class).add(SQLiteSniffer.class).add(DB2Sniffer.class) - .add(H2Sniffer.class).add(HSQLDBSniffer.class).add(SybaseSniffer.class).add(DerbySniffer.class) - .add(SQLServerSniffer.class).add(OracleSniffer.class).add(PostgresSniffer.class) - .add(MySQLSniffer.class).add(MariaDBSniffer.class); + ServerModule.contributeAdapterDetectors(binder) + .add(FirebirdSniffer.class) + .add(FrontBaseSniffer.class) + .add(IngresSniffer.class) + .add(SQLiteSniffer.class) + .add(DB2Sniffer.class) + .add(H2Sniffer.class) + .add(HSQLDBSniffer.class) + .add(SybaseSniffer.class) + .add(DerbySniffer.class) + .add(SQLServerSniffer.class) + .add(OracleSniffer.class) + .add(PostgresSniffer.class) + .add(MySQLSniffer.class) + .add(MariaDBSniffer.class); binder.bind(PkGeneratorFactoryProvider.class).to(PkGeneratorFactoryProvider.class); binder.bind(PkGenerator.class).to(JdbcPkGenerator.class); - ServerModule.contributePkGenerators(binder); + ServerModule.contributePkGenerators(binder) + .put(DB2Adapter.class.getName(), DB2PkGenerator.class) + .put(DerbyAdapter.class.getName(), DerbyPkGenerator.class) + .put(FrontBaseAdapter.class.getName(), FrontBasePkGenerator.class) + .put(H2Adapter.class.getName(), H2PkGenerator.class) + .put(IngresAdapter.class.getName(), IngresPkGenerator.class) + .put(MySQLAdapter.class.getName(), MySQLPkGenerator.class) + .put(OracleAdapter.class.getName(), OraclePkGenerator.class) + .put(Oracle8Adapter.class.getName(), OraclePkGenerator.class) + .put(PostgresAdapter.class.getName(), PostgresPkGenerator.class) + .put(SQLServerAdapter.class.getName(), SybasePkGenerator.class) + .put(SybaseAdapter.class.getName(), SybasePkGenerator.class); binder.bind(DbAdapterFactory.class).to(DefaultDbAdapterFactory.class); binder.bind(DataSourceFactory.class).to(DriverDataSourceFactory.class); diff --git a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/DbGenerateTask.java b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/DbGenerateTask.java index fd1b4cced..2049c01fd 100644 --- a/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/DbGenerateTask.java +++ b/cayenne-gradle-plugin/src/main/java/org/apache/cayenne/tools/DbGenerateTask.java @@ -22,9 +22,14 @@ package org.apache.cayenne.tools; import groovy.lang.Closure; import org.apache.cayenne.access.DbGenerator; import org.apache.cayenne.configuration.DataMapLoader; +import org.apache.cayenne.configuration.DataNodeDescriptor; +import org.apache.cayenne.configuration.server.DataSourceFactory; +import org.apache.cayenne.configuration.server.DbAdapterFactory; +import org.apache.cayenne.configuration.server.PkGeneratorFactoryProvider; import org.apache.cayenne.datasource.DataSourceBuilder; import org.apache.cayenne.dba.DbAdapter; import org.apache.cayenne.dba.JdbcAdapter; +import org.apache.cayenne.dba.PkGenerator; import org.apache.cayenne.dbsync.DbSyncModule; import org.apache.cayenne.dbsync.reverse.configuration.ToolsModule; import org.apache.cayenne.di.AdhocObjectFactory; @@ -92,8 +97,10 @@ public class DbGenerateTask extends BaseCayenneTask { Injector injector = DIBootstrap.createInjector(new DbSyncModule(), new ToolsModule(getLogger())); try { - DbGenerator generator = createGenerator(loadDataMap(injector)); - generator.runGenerator(createDataSource()); + DataSource realDataSource = createDataSource(); + DataMap dataMap = loadDataMap(injector); + DbGenerator generator = createGenerator(dataMap, injector, realDataSource); + generator.runGenerator(realDataSource); } catch (Exception ex) { Throwable th = Util.unwindException(ex); String message = "Error generating database"; @@ -106,8 +113,10 @@ public class DbGenerateTask extends BaseCayenneTask { } } - DbGenerator createGenerator(DataMap dataMap) { - DbGenerator generator = new DbGenerator(createDbAdapter(), dataMap, NoopJdbcEventLogger.getInstance()); + DbGenerator createGenerator(DataMap dataMap, Injector injector, DataSource realDataSource) throws Exception { + DbAdapter dbAdapter = createDbAdapter(injector, realDataSource); + + DbGenerator generator = new DbGenerator(dbAdapter, dataMap, NoopJdbcEventLogger.getInstance()); generator.setShouldCreateFKConstraints(createFK); generator.setShouldCreatePKSupport(createPK); generator.setShouldCreateTables(createTables); @@ -116,13 +125,12 @@ public class DbGenerateTask extends BaseCayenneTask { return generator; } - DbAdapter createDbAdapter() { - Injector injector = DIBootstrap.createInjector(new DbSyncModule(), new ToolsModule(getLogger())); - AdhocObjectFactory objectFactory = injector.getInstance(AdhocObjectFactory.class); + DbAdapter createDbAdapter(Injector injector, DataSource realDataSource) throws Exception { + DbAdapterFactory adapterFactory = injector.getInstance(DbAdapterFactory.class); + DataNodeDescriptor nodeDescriptor = new DataNodeDescriptor(); + nodeDescriptor.setAdapterType(adapter); - return (adapter == null) - ? objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName()) - : objectFactory.newInstance(DbAdapter.class, adapter); + return adapterFactory.createAdapter(nodeDescriptor, realDataSource); } DataSource createDataSource() { diff --git a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/DbGeneratorMojo.java b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/DbGeneratorMojo.java index 22426e216..8aac55caf 100644 --- a/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/DbGeneratorMojo.java +++ b/maven-plugins/cayenne-maven-plugin/src/main/java/org/apache/cayenne/tools/DbGeneratorMojo.java @@ -21,6 +21,8 @@ package org.apache.cayenne.tools; import org.apache.cayenne.access.DbGenerator; import org.apache.cayenne.configuration.DataMapLoader; +import org.apache.cayenne.configuration.DataNodeDescriptor; +import org.apache.cayenne.configuration.server.DbAdapterFactory; import org.apache.cayenne.datasource.DriverDataSource; import org.apache.cayenne.dba.DbAdapter; import org.apache.cayenne.dba.JdbcAdapter; @@ -46,6 +48,7 @@ import org.apache.maven.plugins.annotations.Parameter; import java.io.File; import java.sql.Driver; +import javax.sql.DataSource; /** * Maven mojo that generates database schema based on Cayenne mapping. @@ -126,7 +129,6 @@ public class DbGeneratorMojo extends AbstractMojo { Injector injector = DIBootstrap.createInjector(new DbSyncModule(), new ToolsModule(logger), binder -> binder.bind(ClassLoaderManager.class).toInstance(new MavenPluginClassLoaderManager(project))); - AdhocObjectFactory objectFactory = injector.getInstance(AdhocObjectFactory.class); logger.info(String.format("connection settings - [driver: %s, url: %s, username: %s]", dataSource.getDriver(), dataSource.getUrl(), dataSource.getUsername())); @@ -136,23 +138,23 @@ public class DbGeneratorMojo extends AbstractMojo { dropTables, dropPK, createTables, createPK, createFK)); try { - final DbAdapter adapterInst = (adapter == null) ? - objectFactory.newInstance(DbAdapter.class, JdbcAdapter.class.getName()) : - objectFactory.newInstance(DbAdapter.class, adapter); + // load driver taking custom CLASSPATH into account... + DriverDataSource driverDataSource = new DriverDataSource( + (Driver) Class.forName(dataSource.getDriver()).getDeclaredConstructor().newInstance(), + dataSource.getUrl(), dataSource.getUsername(), dataSource.getPassword() + ); + + final DbAdapter dbAdapter = createDbAdapter(injector, driverDataSource); // Load the data map and run the db generator. DataMap dataMap = loadDataMap(injector); - DbGenerator generator = new DbGenerator(adapterInst, dataMap, NoopJdbcEventLogger.getInstance()); + DbGenerator generator = new DbGenerator(dbAdapter, dataMap, NoopJdbcEventLogger.getInstance()); generator.setShouldCreateFKConstraints(createFK); generator.setShouldCreatePKSupport(createPK); generator.setShouldCreateTables(createTables); generator.setShouldDropPKSupport(dropPK); generator.setShouldDropTables(dropTables); - // load driver taking custom CLASSPATH into account... - DriverDataSource driverDataSource = new DriverDataSource((Driver) Class.forName(dataSource.getDriver()).newInstance(), - dataSource.getUrl(), dataSource.getUsername(), dataSource.getPassword()); - generator.runGenerator(driverDataSource); } catch (Exception ex) { Throwable th = Util.unwindException(ex); @@ -165,6 +167,15 @@ public class DbGeneratorMojo extends AbstractMojo { } } + private DbAdapter createDbAdapter(Injector injector, DataSource dataSource) throws Exception { + DbAdapterFactory adapterFactory = injector.getInstance(DbAdapterFactory.class); + + DataNodeDescriptor nodeDescriptor = new DataNodeDescriptor(); + nodeDescriptor.setAdapterType(adapter); + + return adapterFactory.createAdapter(nodeDescriptor, dataSource); + } + /** * Loads and returns DataMap based on <code>map</code> attribute. */