You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2022/07/01 16:20:07 UTC
[cayenne] 06/06: CAY-2737 Cayenne 4.3: cleanup deprecated code
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 <st...@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.
*/