[NO ISSUE][JDBC] Allow overriding driver version
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Allow extensions to override driver version
Change-Id: Icdd5ff036e27c551defe84ad5caf7fe13f0380ac
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb-clients/+/13684
Reviewed-by: Dmitry Lychagin <dmitry.lychagin@couchbase.com>
Reviewed-by: Ian Maxon <imaxon@uci.edu>
Tested-by: Ian Maxon <imaxon@uci.edu>
diff --git a/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBDriverBase.java b/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBDriverBase.java
index 9bd8641..9524b1c 100644
--- a/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBDriverBase.java
+++ b/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBDriverBase.java
@@ -206,6 +206,10 @@
return getParentLogger(getClass());
}
+ protected Logger getLogger() {
+ return Logger.getLogger(getClass().getName());
+ }
+
private ADBDriverContext getOrCreateDriverContext() {
ADBDriverContext ctx = context;
if (ctx == null) {
@@ -220,7 +224,12 @@
}
protected ADBDriverContext createDriverContext() {
- return new ADBDriverContext(getClass(), getDriverSupportedProperties(), createErrorReporter());
+ return new ADBDriverContext(getDriverVersion(), getDriverSupportedProperties(), createErrorReporter(),
+ getLogger());
+ }
+
+ protected ADBProductVersion getDriverVersion() {
+ return ADBProductVersion.parseDriverVersion(getClass().getPackage());
}
protected Collection<ADBDriverProperty> getDriverSupportedProperties() {
diff --git a/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBDriverContext.java b/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBDriverContext.java
index 3a7401f..f81bb9f 100644
--- a/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBDriverContext.java
+++ b/asterixdb-jdbc/asterix-jdbc-core/src/main/java/org/apache/asterix/jdbc/core/ADBDriverContext.java
@@ -38,14 +38,12 @@
public class ADBDriverContext {
- private final Class<? extends ADBDriverBase> driverClass;
-
- private final ADBErrorReporter errorReporter;
-
private final ADBProductVersion driverVersion;
private final Map<String, ADBDriverProperty> supportedProperties;
+ private final ADBErrorReporter errorReporter;
+
private final Logger logger;
private final ObjectReader genericObjectReader;
@@ -56,12 +54,11 @@
private final ObjectWriter admFormatObjectWriter;
- ADBDriverContext(Class<? extends ADBDriverBase> driverClass,
- Collection<ADBDriverProperty> driverSupportedProperties, ADBErrorReporter errorReporter) {
- this.driverClass = Objects.requireNonNull(driverClass);
+ public ADBDriverContext(ADBProductVersion driverVersion, Collection<ADBDriverProperty> driverSupportedProperties,
+ ADBErrorReporter errorReporter, Logger logger) {
+ this.driverVersion = Objects.requireNonNull(driverVersion);
this.errorReporter = Objects.requireNonNull(errorReporter);
- this.logger = Logger.getLogger(driverClass.getName());
- this.driverVersion = ADBProductVersion.parseDriverVersion(driverClass.getPackage());
+ this.logger = Objects.requireNonNull(logger);
this.supportedProperties = createPropertyIndexByName(driverSupportedProperties);
ObjectMapper genericObjectMapper = createGenericObjectMapper();
@@ -86,7 +83,7 @@
protected ObjectMapper createADMFormatObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
- SimpleModule serdeModule = new SimpleModule(driverClass.getName());
+ SimpleModule serdeModule = new SimpleModule(getClass().getName());
ADBStatement.configureADMFormatSerialization(serdeModule);
ADBRowStore.configureADMFormatDeserialization(mapper, serdeModule);
mapper.registerModule(serdeModule);