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 2018/04/18 09:59:18 UTC

[14/19] cayenne git commit: Refactoring PKs - Refactoring

Refactoring PKs - Refactoring


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/b2f80261
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/b2f80261
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/b2f80261

Branch: refs/heads/master
Commit: b2f80261b32667cbf5ccdf9707f40c04994535a3
Parents: dbd75f9
Author: Aleksey Pleshkanev <pr...@hotmail.com>
Authored: Sun Apr 15 20:23:19 2018 +0300
Committer: Aleksey Pleshkanev <pr...@hotmail.com>
Committed: Sun Apr 15 20:23:19 2018 +0300

----------------------------------------------------------------------
 .../server/DefaultDbAdapterFactory.java         | 12 ++-
 .../org/apache/cayenne/dba/db2/DB2Sniffer.java  | 16 +---
 .../apache/cayenne/dba/derby/DerbySniffer.java  | 13 +--
 .../cayenne/dba/firebird/FirebirdSniffer.java   | 16 +---
 .../cayenne/dba/frontbase/FrontBaseSniffer.java | 16 +---
 .../org/apache/cayenne/dba/h2/H2Sniffer.java    | 15 +---
 .../cayenne/dba/hsqldb/HSQLDBSniffer.java       | 13 +--
 .../cayenne/dba/ingres/IngresSniffer.java       | 15 +---
 .../apache/cayenne/dba/mysql/MySQLSniffer.java  | 11 +--
 .../cayenne/dba/openbase/OpenBaseSniffer.java   | 16 +---
 .../cayenne/dba/oracle/OracleSniffer.java       | 13 +--
 .../cayenne/dba/postgres/PostgresSniffer.java   | 16 +---
 .../cayenne/dba/sqlite/SQLiteSniffer.java       | 16 +---
 .../cayenne/dba/sqlserver/SQLServerSniffer.java | 12 ---
 .../cayenne/dba/sybase/SybaseSniffer.java       | 22 +----
 .../server/DefaultDbAdapterFactoryTest.java     | 91 +++++++++++++++++++-
 16 files changed, 120 insertions(+), 193 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactory.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactory.java b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactory.java
index f528ea5..b3d1605 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactory.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactory.java
@@ -22,6 +22,7 @@ import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.SQLException;
 import java.util.List;
+import java.util.Objects;
 
 import javax.sql.DataSource;
 
@@ -31,6 +32,7 @@ import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.dba.AutoAdapter;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.dba.JdbcAdapter;
+import org.apache.cayenne.dba.PkGenerator;
 import org.apache.cayenne.di.AdhocObjectFactory;
 import org.apache.cayenne.di.Inject;
 import org.apache.cayenne.di.Injector;
@@ -39,7 +41,7 @@ import org.apache.cayenne.log.JdbcEventLogger;
 /**
  * A factory of DbAdapters that either loads user-provided adapter or guesses
  * the adapter type from the database metadata.
- * 
+ *
  * @since 3.1
  */
 public class DefaultDbAdapterFactory implements DbAdapterFactory {
@@ -53,6 +55,9 @@ public class DefaultDbAdapterFactory implements DbAdapterFactory {
 	@Inject
 	protected AdhocObjectFactory objectFactory;
 
+	@Inject
+	protected PkGeneratorFactoryProvider pkGeneratorProvider;
+
 	protected List<DbAdapterDetector> detectors;
 
 	public DefaultDbAdapterFactory(@Inject(Constants.SERVER_ADAPTER_DETECTORS_LIST) List<DbAdapterDetector> detectors) {
@@ -79,7 +84,10 @@ public class DefaultDbAdapterFactory implements DbAdapterFactory {
 		}
 
 		if (adapterType != null) {
-			return objectFactory.newInstance(DbAdapter.class, adapterType);
+			JdbcAdapter dbAdapter = objectFactory.newInstance(DbAdapter.class, adapterType);
+			PkGenerator pkGenerator = pkGeneratorProvider.get(dbAdapter);
+			dbAdapter.setPkGenerator(pkGenerator);
+			return dbAdapter;
 		} else {
 			return new AutoAdapter(() -> detectAdapter(dataSource), jdbcEventLogger);
 		}

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Sniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Sniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Sniffer.java
index fc946f8..727b4dd 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Sniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/db2/DB2Sniffer.java
@@ -38,12 +38,8 @@ public class DB2Sniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
-    public DB2Sniffer(@Inject AdhocObjectFactory objectFactory,
-                      @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
+    public DB2Sniffer(@Inject AdhocObjectFactory objectFactory) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -53,16 +49,8 @@ public class DB2Sniffer implements DbAdapterDetector {
             return null;
         }
 
-        JdbcAdapter adapter = objectFactory.newInstance(
+        return objectFactory.<JdbcAdapter>newInstance(
                 DbAdapter.class,
                 DB2Adapter.class.getName());
-
-        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-
-        return adapter;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbySniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbySniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbySniffer.java
index 7370714..a07c2ab 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbySniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/derby/DerbySniffer.java
@@ -40,12 +40,9 @@ public class DerbySniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
     public DerbySniffer(@Inject AdhocObjectFactory objectFactory,
                         @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -55,16 +52,8 @@ public class DerbySniffer implements DbAdapterDetector {
             return null;
         }
 
-        JdbcAdapter adapter = objectFactory.newInstance(
+        return objectFactory.<JdbcAdapter>newInstance(
                 DbAdapter.class,
                 DerbyAdapter.class.getName());
-
-        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-
-        return adapter;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/firebird/FirebirdSniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/firebird/FirebirdSniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/firebird/FirebirdSniffer.java
index 6c69d94..9e674c2 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/firebird/FirebirdSniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/firebird/FirebirdSniffer.java
@@ -35,12 +35,8 @@ public class FirebirdSniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
-    public FirebirdSniffer(@Inject AdhocObjectFactory objectFactory,
-                           @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
+    public FirebirdSniffer(@Inject AdhocObjectFactory objectFactory) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -50,16 +46,8 @@ public class FirebirdSniffer implements DbAdapterDetector {
             return null;
         }
 
-        JdbcAdapter adapter = objectFactory.newInstance(
+        return objectFactory.<JdbcAdapter>newInstance(
                 DbAdapter.class,
                 FirebirdAdapter.class.getName());
-
-        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-
-        return adapter;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseSniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseSniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseSniffer.java
index 57a10a6..900f5d2 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseSniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseSniffer.java
@@ -38,12 +38,8 @@ public class FrontBaseSniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
-    public FrontBaseSniffer(@Inject AdhocObjectFactory objectFactory,
-                            @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
+    public FrontBaseSniffer(@Inject AdhocObjectFactory objectFactory) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -53,16 +49,8 @@ public class FrontBaseSniffer implements DbAdapterDetector {
             return null;
         }
 
-        JdbcAdapter adapter = objectFactory.newInstance(
+        return objectFactory.<JdbcAdapter>newInstance(
                 DbAdapter.class,
                 FrontBaseAdapter.class.getName());
-
-        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-
-        return adapter;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/h2/H2Sniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/h2/H2Sniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/h2/H2Sniffer.java
index bb898d3..1e2204a 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/h2/H2Sniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/h2/H2Sniffer.java
@@ -38,12 +38,8 @@ public class H2Sniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
-    public H2Sniffer(@Inject AdhocObjectFactory objectFactory,
-                     @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
+    public H2Sniffer(@Inject AdhocObjectFactory objectFactory) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -53,16 +49,9 @@ public class H2Sniffer implements DbAdapterDetector {
             return null;
         }
 
-        JdbcAdapter adapter = objectFactory.newInstance(
+        return objectFactory.<JdbcAdapter>newInstance(
                 DbAdapter.class,
                 H2Adapter.class.getName());
-
-        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-        return adapter;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java
index e098407..bb9954e 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBSniffer.java
@@ -40,12 +40,9 @@ public class HSQLDBSniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
     public HSQLDBSniffer(@Inject AdhocObjectFactory objectFactory,
                          @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -58,16 +55,8 @@ public class HSQLDBSniffer implements DbAdapterDetector {
         boolean supportsSchema = md.getDriverMajorVersion() < 1
                 || md.getDriverMajorVersion() == 1 && md.getDriverMinorVersion() <= 8;
 
-        JdbcAdapter adapter = supportsSchema
+        return supportsSchema
                 ? objectFactory.newInstance(DbAdapter.class, HSQLDBAdapter.class.getName())
                 : objectFactory.newInstance(DbAdapter.class, HSQLDBNoSchemaAdapter.class.getName());
-
-        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-
-        return adapter;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSniffer.java
index 267791d..20c0279 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/ingres/IngresSniffer.java
@@ -40,12 +40,9 @@ public class IngresSniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
 
-    public IngresSniffer(@Inject AdhocObjectFactory objectFactory,
-                         @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
+    public IngresSniffer(@Inject AdhocObjectFactory objectFactory) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -55,16 +52,8 @@ public class IngresSniffer implements DbAdapterDetector {
             return null;
         }
 
-        JdbcAdapter adapter = objectFactory.newInstance(
+        return objectFactory.<JdbcAdapter>newInstance(
                 DbAdapter.class,
                 IngresAdapter.class.getName());
-
-        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-
-        return adapter;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSniffer.java
index 72e84b8..c62d9e2 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/mysql/MySQLSniffer.java
@@ -41,12 +41,8 @@ public class MySQLSniffer implements DbAdapterDetector {
 
 	protected AdhocObjectFactory objectFactory;
 
-	protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
-	public MySQLSniffer(@Inject AdhocObjectFactory objectFactory,
-						@Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
+	public MySQLSniffer(@Inject AdhocObjectFactory objectFactory) {
 		this.objectFactory = objectFactory;
-		this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
 	}
 
 	@Override
@@ -81,11 +77,6 @@ public class MySQLSniffer implements DbAdapterDetector {
 		MySQLAdapter adapter = objectFactory.newInstance(MySQLAdapter.class, MySQLAdapter.class.getName());
 		adapter.setStorageEngine(adapterStorageEngine);
 
-		PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-		if (pkGenerator != null) {
-			adapter.setPkGenerator(pkGenerator);
-		}
 		return adapter;
 	}
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSniffer.java
index 495e195..7f5e2b0 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSniffer.java
@@ -40,12 +40,8 @@ public class OpenBaseSniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
-    public OpenBaseSniffer(@Inject AdhocObjectFactory objectFactory,
-                           @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
+    public OpenBaseSniffer(@Inject AdhocObjectFactory objectFactory) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -55,17 +51,9 @@ public class OpenBaseSniffer implements DbAdapterDetector {
             return null;
         }
 
-        JdbcAdapter adapter = objectFactory.newInstance(
+        return objectFactory.<JdbcAdapter>newInstance(
                 DbAdapter.class,
                 OpenBaseAdapter.class.getName());
-
-        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-
-        return adapter;
     }
 
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSniffer.java
index be94401..ff5ae37 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/oracle/OracleSniffer.java
@@ -38,12 +38,9 @@ public class OracleSniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
     public OracleSniffer(@Inject AdhocObjectFactory objectFactory,
                          @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -53,16 +50,8 @@ public class OracleSniffer implements DbAdapterDetector {
             return null;
         }
 
-        JdbcAdapter adapter = md.getDriverMajorVersion() <= 8
+        return md.getDriverMajorVersion() <= 8
                 ? objectFactory.newInstance(DbAdapter.class, Oracle8Adapter.class.getName())
                 : objectFactory.newInstance(DbAdapter.class, OracleAdapter.class.getName());
-
-        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-
-        return adapter;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSniffer.java
index 66d36f7..b6b6073 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/postgres/PostgresSniffer.java
@@ -38,12 +38,8 @@ public class PostgresSniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
-    public PostgresSniffer(@Inject AdhocObjectFactory objectFactory,
-                           @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
+    public PostgresSniffer(@Inject AdhocObjectFactory objectFactory) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -53,16 +49,8 @@ public class PostgresSniffer implements DbAdapterDetector {
             return null;
         }
 
-        JdbcAdapter adapter = objectFactory.newInstance(
+        return objectFactory.newInstance(
                 DbAdapter.class,
                 PostgresAdapter.class.getName());
-
-        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-
-        return adapter;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteSniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteSniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteSniffer.java
index 5094122..3a33b64 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteSniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteSniffer.java
@@ -39,12 +39,8 @@ public class SQLiteSniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
-    public SQLiteSniffer(@Inject AdhocObjectFactory objectFactory,
-                         @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
+    public SQLiteSniffer(@Inject AdhocObjectFactory objectFactory) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -54,16 +50,8 @@ public class SQLiteSniffer implements DbAdapterDetector {
             return null;
         }
 
-        JdbcAdapter adapter = objectFactory.newInstance(
+        return objectFactory.<JdbcAdapter>newInstance(
                 DbAdapter.class,
                 SQLiteAdapter.class.getName());
-
-        PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-
-        return adapter;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSniffer.java
index f2b45fd..e00d6a7 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sqlserver/SQLServerSniffer.java
@@ -39,12 +39,9 @@ public class SQLServerSniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
     public SQLServerSniffer(@Inject AdhocObjectFactory objectFactory,
                             @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
@@ -61,24 +58,15 @@ public class SQLServerSniffer implements DbAdapterDetector {
         // detect whether generated keys are supported
 
         boolean generatedKeys = false;
-        PkGenerator pkGenerator = null;
 
         try {
             generatedKeys = md.supportsGetGeneratedKeys();
-            if (generatedKeys) {
-                pkGenerator = pkGeneratorProvider.get(adapter);
-
-            }
         } catch (Throwable th) {
             // catch exceptions resulting from incomplete JDBC3 implementation
             // ** we have to catch Throwable, as unimplemented methods would result in
             // "AbstractMethodError".
         }
         adapter.setSupportsGeneratedKeys(generatedKeys);
-        if (pkGenerator != null) {
-            adapter.setPkGenerator(pkGenerator);
-        }
-
         return adapter;
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseSniffer.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseSniffer.java b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseSniffer.java
index 5ad7270..38f0e05 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseSniffer.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/dba/sybase/SybaseSniffer.java
@@ -40,38 +40,22 @@ public class SybaseSniffer implements DbAdapterDetector {
 
     protected AdhocObjectFactory objectFactory;
 
-    protected PkGeneratorFactoryProvider pkGeneratorProvider;
-
-    public SybaseSniffer(@Inject AdhocObjectFactory objectFactory,
-                         @Inject PkGeneratorFactoryProvider pkGeneratorProvider) {
+    public SybaseSniffer(@Inject AdhocObjectFactory objectFactory) {
         this.objectFactory = objectFactory;
-        this.pkGeneratorProvider = Objects.requireNonNull(pkGeneratorProvider, "Null pkGeneratorProvider");
     }
 
     @Override
     public DbAdapter createAdapter(DatabaseMetaData md) throws SQLException {
         // JTDS driver returns "sql server" for Sybase, so need to handle it differently
         String driver = md.getDriverName();
-        JdbcAdapter adapter;
         if (driver != null && driver.toLowerCase().startsWith("jtds")) {
             String url = md.getURL();
-            adapter = url != null && url.toLowerCase().startsWith("jdbc:jtds:sybase:")
+            return url != null && url.toLowerCase().startsWith("jdbc:jtds:sybase:")
                     ? objectFactory.newInstance(DbAdapter.class, SybaseAdapter.class.getName()) : null;
         } else {
             String dbName = md.getDatabaseProductName();
-            adapter = dbName != null && dbName.toUpperCase().contains("ADAPTIVE SERVER")
+            return dbName != null && dbName.toUpperCase().contains("ADAPTIVE SERVER")
                     ? objectFactory.newInstance(DbAdapter.class, SybaseAdapter.class.getName()) : null;
         }
-        
-        if (adapter != null) {
-            PkGenerator pkGenerator = pkGeneratorProvider.get(adapter);
-
-            if (pkGenerator != null) {
-                adapter.setPkGenerator(pkGenerator);
-            }
-            return adapter;
-        } else {
-            return null;
-        }
     }
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/b2f80261/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactoryTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactoryTest.java b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactoryTest.java
index 1e80301..6cf2f13 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactoryTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/configuration/server/DefaultDbAdapterFactoryTest.java
@@ -29,7 +29,30 @@ import org.apache.cayenne.configuration.DefaultRuntimeProperties;
 import org.apache.cayenne.configuration.RuntimeProperties;
 import org.apache.cayenne.dba.AutoAdapter;
 import org.apache.cayenne.dba.DbAdapter;
+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.derby.DerbyAdapter;
+import org.apache.cayenne.dba.derby.DerbyPkGenerator;
+import org.apache.cayenne.dba.frontbase.FrontBaseAdapter;
+import org.apache.cayenne.dba.frontbase.FrontBasePkGenerator;
+import org.apache.cayenne.dba.h2.H2Adapter;
+import org.apache.cayenne.dba.h2.H2PkGenerator;
+import org.apache.cayenne.dba.ingres.IngresAdapter;
+import org.apache.cayenne.dba.ingres.IngresPkGenerator;
+import org.apache.cayenne.dba.mysql.MySQLAdapter;
+import org.apache.cayenne.dba.mysql.MySQLPkGenerator;
+import org.apache.cayenne.dba.openbase.OpenBaseAdapter;
+import org.apache.cayenne.dba.openbase.OpenBasePkGenerator;
+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.postgres.PostgresAdapter;
+import org.apache.cayenne.dba.postgres.PostgresPkGenerator;
+import org.apache.cayenne.dba.sqlserver.SQLServerAdapter;
 import org.apache.cayenne.dba.sybase.SybaseAdapter;
+import org.apache.cayenne.dba.sybase.SybasePkGenerator;
 import org.apache.cayenne.di.AdhocObjectFactory;
 import org.apache.cayenne.di.ClassLoaderManager;
 import org.apache.cayenne.di.DIBootstrap;
@@ -78,7 +101,22 @@ public class DefaultDbAdapterFactoryTest {
 
         Module testModule = binder -> {
             ServerModule.contributeProperties(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(OpenBaseAdapter.class.getName(), OpenBasePkGenerator.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(PkGenerator.class).to(JdbcPkGenerator.class);
+            binder.bind(PkGeneratorFactoryProvider.class).to(PkGeneratorFactoryProvider.class);
             binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class);
             binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
             binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
@@ -105,7 +143,22 @@ public class DefaultDbAdapterFactoryTest {
             ServerModule.contributeDefaultTypes(binder);
             ServerModule.contributeUserTypes(binder);
             ServerModule.contributeTypeFactories(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(OpenBaseAdapter.class.getName(), OpenBasePkGenerator.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(PkGenerator.class).to(JdbcPkGenerator.class);
+            binder.bind(PkGeneratorFactoryProvider.class).to(PkGeneratorFactoryProvider.class);
             binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class);
             binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
             binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
@@ -142,7 +195,22 @@ public class DefaultDbAdapterFactoryTest {
             ServerModule.contributeDefaultTypes(binder);
             ServerModule.contributeUserTypes(binder);
             ServerModule.contributeTypeFactories(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(OpenBaseAdapter.class.getName(), OpenBasePkGenerator.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(PkGenerator.class).to(JdbcPkGenerator.class);
+            binder.bind(PkGeneratorFactoryProvider.class).to(PkGeneratorFactoryProvider.class);
             binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class);
             binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
             binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);
@@ -186,7 +254,22 @@ public class DefaultDbAdapterFactoryTest {
 
         Module testModule = binder -> {
             ServerModule.contributeProperties(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(OpenBaseAdapter.class.getName(), OpenBasePkGenerator.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(PkGenerator.class).to(JdbcPkGenerator.class);
+            binder.bind(PkGeneratorFactoryProvider.class).to(PkGeneratorFactoryProvider.class);
             binder.bind(ClassLoaderManager.class).to(DefaultClassLoaderManager.class);
             binder.bind(JdbcEventLogger.class).to(Slf4jJdbcEventLogger.class);
             binder.bind(AdhocObjectFactory.class).to(DefaultAdhocObjectFactory.class);