This is an automated email from the ASF dual-hosted git repository.
hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git
The following commit(s) were added to refs/heads/main by this push:
new cc1678bfd9 Update logic for retrieving version information for a JDBC
driver #7205 (#7206)
cc1678bfd9 is described below
commit cc1678bfd924a88d4cf5f14f315475039ac5f3e9
Author: Nicolas Adment <[email protected]>
AuthorDate: Mon Jun 1 10:36:38 2026 +0200
Update logic for retrieving version information for a JDBC driver #7205
(#7206)
---
.../hop/ui/core/database/DatabaseMetaEditor.java | 41 ++++++++++++++++------
1 file changed, 31 insertions(+), 10 deletions(-)
diff --git
a/ui/src/main/java/org/apache/hop/ui/core/database/DatabaseMetaEditor.java
b/ui/src/main/java/org/apache/hop/ui/core/database/DatabaseMetaEditor.java
index a71bde7498..020819cd2b 100644
--- a/ui/src/main/java/org/apache/hop/ui/core/database/DatabaseMetaEditor.java
+++ b/ui/src/main/java/org/apache/hop/ui/core/database/DatabaseMetaEditor.java
@@ -17,6 +17,7 @@
package org.apache.hop.ui.core.database;
+import java.sql.Driver;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -71,6 +72,7 @@ import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
+import org.jspecify.annotations.Nullable;
@GuiPlugin(description = "This is the editor for database connection metadata")
/**
@@ -1188,26 +1190,45 @@ public class DatabaseMetaEditor extends
MetadataEditor<DatabaseMeta> {
meta.setSshTunnelPassphrase(wSshTunnelPassphrase.getText());
}
- /** Update JDBC driver information and version */
+ /** Updates the displayed driver information, including the driver name and
version. */
protected void updateDriverInfo() {
+ String driverName;
+ String driverVersion = null;
try {
DatabaseMeta databaseMeta = new DatabaseMeta();
this.getWidgetsContent(databaseMeta);
- wDriverInfo.setText("");
- String driverName = databaseMeta.getDriverClass(getVariables());
+ driverName = databaseMeta.getDriverClass(getVariables());
if (!Utils.isEmpty(driverName)) {
ClassLoader classLoader =
databaseMeta.getIDatabase().getClass().getClassLoader();
- Class<?> driver = classLoader.loadClass(driverName);
+ Class<? extends Driver> driverClass =
+ classLoader.loadClass(driverName).asSubclass(Driver.class);
+ driverVersion = getDriverVersion(driverClass);
+ }
+ } catch (Exception e) {
+ driverName = "No driver installed";
+ }
- if (driver.getPackage().getImplementationVersion() != null) {
- driverName = driverName + " (" +
driver.getPackage().getImplementationVersion() + ")";
- }
+ wDriverInfo.setText(driverName + (driverVersion != null ? " (" +
driverVersion + ")" : ""));
+ }
- wDriverInfo.setText(driverName);
- }
+ /**
+ * Retrieves the version information for the specified JDBC driver class.
+ *
+ * @param driverClass The JDBC driver class for which to retrieve the
version information.
+ * @return The driver version as a string, or null if the version cannot be
determined.
+ */
+ private static @Nullable String getDriverVersion(Class<? extends Driver>
driverClass) {
+ String version = driverClass.getPackage().getImplementationVersion();
+ if (version != null) {
+ return version;
+ }
+ try {
+ Driver driver = driverClass.getDeclaredConstructor().newInstance();
+ return driver.getMajorVersion() + "." + driver.getMinorVersion();
} catch (Exception e) {
- wDriverInfo.setText("No driver installed");
+ // Ignore - version could not be determined
+ return null;
}
}