From cc5f17a0136ed720280fd873230d3db05417ed4d Mon Sep 17 00:00:00 2001 From: Mitch Gaffigan Date: Thu, 24 Sep 2026 15:47:27 +0000 Subject: [PATCH] Remove the disused selectLimit metadata query Dead since the table metadata probe switched to `WHERE 1 = 0`. Dropped the REST parameter, the Drivers dialog column, and the dbdrivers.xml attribute. `DriverInfo.selectLimit` is retained as a deprecated no-op: the field still has to exist for previously saved driver lists to deserialize, and the constructors keep outside callers building. It no longer participates in equals, so the dialog does not report a phantom change when loading an old config. Signed-off-by: Mitch Gaffigan --- .../jdbc/DatabaseConnectionInfo.java | 12 +--- .../jdbc/DatabaseDriversDialog.java | 23 +++---- .../jdbc/DatabaseMetadataDialog.java | 2 +- .../connectors/jdbc/DatabaseReader.java | 6 +- .../connectors/jdbc/DatabaseWriter.java | 6 +- server/conf/dbdrivers.xml | 13 ++-- .../jdbc/DatabaseConnectorServlet.java | 5 +- .../DatabaseConnectorServletInterface.java | 1 - .../com/mirth/connect/model/DriverInfo.java | 50 ++++++++++---- .../DefaultConfigurationController.java | 3 +- .../servlets/SwaggerExamplesServlet.java | 2 +- .../DefaultConfigurationControllerTest.java | 66 ++++++++++++++----- .../server/migration/Migrate3_8_0Test.java | 22 +++---- .../smoketest/DatabaseMetadataTest.java | 2 +- 14 files changed, 126 insertions(+), 87 deletions(-) diff --git a/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectionInfo.java b/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectionInfo.java index 6e79fa7415..f7d390235f 100644 --- a/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectionInfo.java +++ b/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectionInfo.java @@ -17,16 +17,14 @@ public class DatabaseConnectionInfo { private String username; private String password; private String tableNamePatternExpression; - private String selectLimit; private Set resourceIds; - public DatabaseConnectionInfo(String driver, String url, String username, String password, String tableNamePatternExpression, String selectLimit, Set resourceIds) { + public DatabaseConnectionInfo(String driver, String url, String username, String password, String tableNamePatternExpression, Set resourceIds) { this.driver = driver; this.url = url; this.username = username; this.password = password; this.tableNamePatternExpression = tableNamePatternExpression; - this.selectLimit = selectLimit; this.resourceIds = resourceIds; } @@ -70,14 +68,6 @@ public void setTableNamePatternExpression(String tableNamePatternExpression) { this.tableNamePatternExpression = tableNamePatternExpression; } - public String getSelectLimit() { - return selectLimit; - } - - public void setSelectLimit(String selectLimit) { - this.selectLimit = selectLimit; - } - public Set getResourceIds() { return resourceIds; } diff --git a/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseDriversDialog.java b/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseDriversDialog.java index f9af17a16d..47ade77d19 100644 --- a/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseDriversDialog.java +++ b/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseDriversDialog.java @@ -111,9 +111,8 @@ public List getDrivers() { String name = StringUtils.trim((String) driversTable.getModel().getValueAt(row, 0)); String className = StringUtils.trim((String) driversTable.getModel().getValueAt(row, 1)); String template = StringUtils.trim((String) driversTable.getModel().getValueAt(row, 2)); - String selectLimit = StringUtils.trim((String) driversTable.getModel().getValueAt(row, 3)); - List alternativeClassNames = new ArrayList(Arrays.asList(StringUtils.split(StringUtils.trim((String) driversTable.getModel().getValueAt(row, 4)), ','))); - drivers.add(new DriverInfo(name, className, template, selectLimit, alternativeClassNames)); + List alternativeClassNames = new ArrayList(Arrays.asList(StringUtils.split(StringUtils.trim((String) driversTable.getModel().getValueAt(row, 3)), ','))); + drivers.add(new DriverInfo(name, className, template, alternativeClassNames)); } return drivers; @@ -124,21 +123,20 @@ private void setDrivers(List drivers) { drivers = new ArrayList(); } - Object[][] data = new Object[drivers.size()][5]; + Object[][] data = new Object[drivers.size()][4]; for (int i = 0; i < drivers.size(); i++) { DriverInfo info = drivers.get(i); data[i][0] = StringUtils.trim(StringUtils.defaultString(info.getName())); data[i][1] = StringUtils.trim(StringUtils.defaultString(info.getClassName())); data[i][2] = StringUtils.trim(StringUtils.defaultString(info.getTemplate())); - data[i][3] = StringUtils.trim(StringUtils.defaultString(info.getSelectLimit())); String alternativeClassNamesStr = ""; List alternativeClassNames = info.getAlternativeClassNames(); if (CollectionUtils.isNotEmpty(alternativeClassNames)) { alternativeClassNamesStr = StringUtils.join(alternativeClassNames, ','); } - data[i][4] = alternativeClassNamesStr; + data[i][3] = alternativeClassNamesStr; } ((RefreshTableModel) driversTable.getModel()).refreshDataVector(data); @@ -184,7 +182,7 @@ private void initComponents() { driversTable = new MirthTable(); driversTable.setModel(new RefreshTableModel(new Object[] { "Name", "Driver Class", - "JDBC URL Template", "Select with Limit Query", "Legacy Driver Classes" }, 0)); + "JDBC URL Template", "Legacy Driver Classes" }, 0)); driversTable.setDragEnabled(false); driversTable.setRowSelectionAllowed(true); driversTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); @@ -204,8 +202,7 @@ private void initComponents() { driversTable.getColumnExt(0).setPreferredWidth(101); driversTable.getColumnExt(1).setPreferredWidth(162); driversTable.getColumnExt(2).setPreferredWidth(269); - driversTable.getColumnExt(3).setPreferredWidth(200); - driversTable.getColumnExt(4).setPreferredWidth(137); + driversTable.getColumnExt(3).setPreferredWidth(137); driversScrollPane = new JScrollPane(driversTable); @@ -233,8 +230,7 @@ private void initToolTips() { driversTable.getColumnExt(0).setToolTipText("The name of the driver entry. This will appear in the
drop-down menu for the Database Reader/Writer connectors."); driversTable.getColumnExt(1).setToolTipText("The fully-qualified Java class name for the JDBC driver."); driversTable.getColumnExt(2).setToolTipText("The template for the JDBC connection URL that can be
auto-populated from the Database Reader/Writer settings."); - driversTable.getColumnExt(3).setToolTipText("A select query (with limit 1) that can be used to
retrieve column metadata. If empty the driver-specific
generic query will be used, which could be slow."); - driversTable.getColumnExt(4).setToolTipText("A comma-separated list of alternate or legacy JDBC driver class names.
Any Database Reader/Writer connector using one of these driver classes
will have the corresponding entry selected in the Driver drop-down menu.
The driver will be updated to the primary value upon next channel save."); + driversTable.getColumnExt(3).setToolTipText("A comma-separated list of alternate or legacy JDBC driver class names.
Any Database Reader/Writer connector using one of these driver classes
will have the corresponding entry selected in the Driver drop-down menu.
The driver will be updated to the primary value upon next channel save."); } private void initLayout() { @@ -256,12 +252,11 @@ private void addDriver() { int selectedRow = getSelectedRow(); if (selectedRow >= 0) { ((RefreshTableModel) driversTable.getModel()).insertRow(selectedRow + 1, new Object[] { - "", "", "", "", "" }); + "", "", "", "" }); driversTable.getSelectionModel().setSelectionInterval(selectedRow + 1, selectedRow + 1); driversTable.scrollRowToVisible(selectedRow + 1); } else { - ((RefreshTableModel) driversTable.getModel()).addRow(new Object[] { "", "", "", "", - "" }); + ((RefreshTableModel) driversTable.getModel()).addRow(new Object[] { "", "", "", "" }); driversTable.getSelectionModel().setSelectionInterval(driversTable.getRowCount() - 1, driversTable.getRowCount() - 1); driversTable.scrollRowToVisible(driversTable.getRowCount() - 1); } diff --git a/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseMetadataDialog.java b/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseMetadataDialog.java index 6edc39c8a2..da92dd49ab 100644 --- a/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseMetadataDialog.java +++ b/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseMetadataDialog.java @@ -564,7 +564,7 @@ public void handle(Object response) { Set tableNamePatterns = new HashSet(Arrays.asList(databaseConnectionInfo.getTableNamePatternExpression().trim().split("[, ]+"))); try { metaDataWorkerId = UUID.randomUUID().toString(); - parentConnector.getServlet(DatabaseConnectorServletInterface.class, "Retrieving tables...", "Could not retrieve database metadata. Please ensure that your driver, URL, username, and password are correct.\n\n", handler, metaDataWorkerId).getTables(parent.channelEditPanel.currentChannel.getId(), parent.channelEditPanel.currentChannel.getName(), databaseConnectionInfo.getDriver(), databaseConnectionInfo.getUrl(), databaseConnectionInfo.getUsername(), databaseConnectionInfo.getPassword(), tableNamePatterns, databaseConnectionInfo.getSelectLimit(), databaseConnectionInfo.getResourceIds()); + parentConnector.getServlet(DatabaseConnectorServletInterface.class, "Retrieving tables...", "Could not retrieve database metadata. Please ensure that your driver, URL, username, and password are correct.\n\n", handler, metaDataWorkerId).getTables(parent.channelEditPanel.currentChannel.getId(), parent.channelEditPanel.currentChannel.getName(), databaseConnectionInfo.getDriver(), databaseConnectionInfo.getUrl(), databaseConnectionInfo.getUsername(), databaseConnectionInfo.getPassword(), tableNamePatterns, databaseConnectionInfo.getResourceIds()); } catch (ClientException e) { // Should not happen } diff --git a/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseReader.java b/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseReader.java index ec966d0d22..c807593c0c 100644 --- a/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseReader.java +++ b/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseReader.java @@ -729,11 +729,11 @@ private DriverInfo getSelectedDriver() { } private DriverInfo getSelectOneDriver() { - return new DriverInfo(DatabaseReceiverProperties.DRIVER_DEFAULT, "", "", ""); + return new DriverInfo(DatabaseReceiverProperties.DRIVER_DEFAULT, "", ""); } private DriverInfo getCustomDriver() { - return new DriverInfo(DatabaseReceiverProperties.DRIVER_CUSTOM, "", "", ""); + return new DriverInfo(DatabaseReceiverProperties.DRIVER_CUSTOM, "", ""); } private void fixDriversList() { @@ -932,7 +932,7 @@ public void showDatabaseMetaData(STATEMENT_TYPE type) { } else { Connector sourceConnector = PlatformUI.MIRTH_FRAME.channelEditPanel.currentChannel.getSourceConnector(); Set resourceIds = PlatformUI.MIRTH_FRAME.channelEditPanel.resourceIds.get(sourceConnector.getMetaDataId()).keySet(); - new DatabaseMetadataDialog(this, type, new DatabaseConnectionInfo(properties.getDriver(), properties.getUrl(), properties.getUsername(), properties.getPassword(), "", getSelectedDriver().getSelectLimit(), resourceIds)); + new DatabaseMetadataDialog(this, type, new DatabaseConnectionInfo(properties.getDriver(), properties.getUrl(), properties.getUsername(), properties.getPassword(), "", resourceIds)); } } diff --git a/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseWriter.java b/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseWriter.java index 89c5d4d33b..bf4c604112 100644 --- a/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseWriter.java +++ b/client/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseWriter.java @@ -412,11 +412,11 @@ private DriverInfo getSelectedDriver() { } private DriverInfo getSelectOneDriver() { - return new DriverInfo(DatabaseReceiverProperties.DRIVER_DEFAULT, "", "", ""); + return new DriverInfo(DatabaseReceiverProperties.DRIVER_DEFAULT, "", ""); } private DriverInfo getCustomDriver() { - return new DriverInfo(DatabaseReceiverProperties.DRIVER_CUSTOM, "", "", ""); + return new DriverInfo(DatabaseReceiverProperties.DRIVER_CUSTOM, "", ""); } private void fixDriversList() { @@ -508,7 +508,7 @@ public void showDatabaseMetaData(STATEMENT_TYPE type) { } else { Connector destinationConnector = PlatformUI.MIRTH_FRAME.channelEditPanel.currentChannel.getDestinationConnectors().get(PlatformUI.MIRTH_FRAME.channelEditPanel.lastModelIndex); Set resourceIds = PlatformUI.MIRTH_FRAME.channelEditPanel.resourceIds.get(destinationConnector.getMetaDataId()).keySet(); - new DatabaseMetadataDialog(this, type, new DatabaseConnectionInfo(properties.getDriver(), properties.getUrl(), properties.getUsername(), properties.getPassword(), "", getSelectedDriver().getSelectLimit(), resourceIds)); + new DatabaseMetadataDialog(this, type, new DatabaseConnectionInfo(properties.getDriver(), properties.getUrl(), properties.getUsername(), properties.getPassword(), "", resourceIds)); } } diff --git a/server/conf/dbdrivers.xml b/server/conf/dbdrivers.xml index ca83103985..ee5b274e81 100644 --- a/server/conf/dbdrivers.xml +++ b/server/conf/dbdrivers.xml @@ -3,14 +3,13 @@ class = the driver class name, cannot be empty name = database driver name to be displayed as, cannot be empty template = the template for creating the database connection, cannot be empty - selectLimit = defines the select statement used for retrieving column information, empty means use the generic query (which could be slow) alternativeClasses = A comma-separated list of legacy driver classes (optional). --> - - - - - - + + + + + + \ No newline at end of file diff --git a/server/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectorServlet.java b/server/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectorServlet.java index b2eb3d218d..35c108625b 100644 --- a/server/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectorServlet.java +++ b/server/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectorServlet.java @@ -40,10 +40,7 @@ public DatabaseConnectorServlet(@Context HttpServletRequest request, @Context Se } @Override - public SortedSet getTables(String channelId, String channelName, String driver, String url, String username, String password, Set tableNamePatterns, String selectLimit, Set resourceIds) { - // selectLimit is deprecated and ignored for security reasons. Kept for backcompat. - selectLimit = null; - + public SortedSet
getTables(String channelId, String channelName, String driver, String url, String username, String password, Set tableNamePatterns, Set resourceIds) { CustomDriver customDriver = null; Connection connection = null; try { diff --git a/server/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectorServletInterface.java b/server/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectorServletInterface.java index 40ae6174fb..ecc8f45e56 100644 --- a/server/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectorServletInterface.java +++ b/server/src/main/java/com/mirth/connect/connectors/jdbc/DatabaseConnectorServletInterface.java @@ -59,7 +59,6 @@ public SortedSet
getTables(// @formatter:off @Param("username") @Parameter(description = "The username to authenticate with.") @DefaultValue("") @QueryParam("username") String username, @Param(value = "password", excludeFromAudit = true) @Parameter(description = "The password to authenticate with.", schema = @Schema(format = "password")) @DefaultValue("") @QueryParam("password") String password, @Param("tableNamePatterns") @Parameter(description = "If specified, filters by table name. Wildcards (* or %) are allowed.") @QueryParam("tableNamePattern") Set tableNamePatterns, - @Param("selectLimit") @Parameter(description = "A simple query to use to retrieve database metadata information.", schema = @Schema(defaultValue = "SELECT * FROM ? LIMIT 1")) @DefaultValue("SELECT * FROM ? LIMIT 1") @QueryParam("selectLimit") String selectLimit, @Param("resourceIds") @Parameter(description = "Library resource IDs to use, if a custom driver is necessary.") @QueryParam("resourceId") Set resourceIds) throws ClientException; // @formatter:on) } \ No newline at end of file diff --git a/server/src/main/java/com/mirth/connect/model/DriverInfo.java b/server/src/main/java/com/mirth/connect/model/DriverInfo.java index 5817af3336..42f96ad56d 100644 --- a/server/src/main/java/com/mirth/connect/model/DriverInfo.java +++ b/server/src/main/java/com/mirth/connect/model/DriverInfo.java @@ -23,6 +23,10 @@ public class DriverInfo implements Serializable { private String className; private String name; private String template; + /** + * @deprecated Unused. Retained so that previously serialized driver lists still deserialize. + */ + @Deprecated private String selectLimit; private List alternativeClassNames; @@ -30,28 +34,43 @@ public DriverInfo() { } - public DriverInfo(String name, String className, String template, String selectLimit) { - this(name, className, template, selectLimit, new ArrayList()); + public DriverInfo(String name, String className, String template) { + this(name, className, template, new ArrayList()); } - public DriverInfo(String name, String className, String template, String selectLimit, List alternativeClassNames) { + public DriverInfo(String name, String className, String template, List alternativeClassNames) { this.name = name; this.className = className; this.template = template; - this.selectLimit = selectLimit; this.alternativeClassNames = alternativeClassNames; } + /** + * @deprecated selectLimit is unused. Use {@link #DriverInfo(String, String, String)}. + */ + @Deprecated + public DriverInfo(String name, String className, String template, String selectLimit) { + this(name, className, template); + } + + /** + * @deprecated selectLimit is unused. Use {@link #DriverInfo(String, String, String, List)}. + */ + @Deprecated + public DriverInfo(String name, String className, String template, String selectLimit, List alternativeClassNames) { + this(name, className, template, alternativeClassNames); + } + public static List getDefaultDrivers() { List drivers = new ArrayList(); - drivers.add(new DriverInfo("MySQL", "com.mysql.cj.jdbc.Driver", "jdbc:mysql://host:port/dbname", "SELECT * FROM ? LIMIT 1", new ArrayList(Arrays.asList(new String[] { + drivers.add(new DriverInfo("MySQL", "com.mysql.cj.jdbc.Driver", "jdbc:mysql://host:port/dbname", new ArrayList(Arrays.asList(new String[] { "com.mysql.jdbc.Driver" })))); - drivers.add(new DriverInfo("Oracle", "oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@host:port:dbname", "SELECT * FROM ? WHERE ROWNUM < 2")); - drivers.add(new DriverInfo("PostgreSQL", "org.postgresql.Driver", "jdbc:postgresql://host:port/dbname", "SELECT * FROM ? LIMIT 1")); - drivers.add(new DriverInfo("SQL Server/Sybase (jTDS)", "net.sourceforge.jtds.jdbc.Driver", "jdbc:jtds:sqlserver://host:port/dbname", "SELECT TOP 1 * FROM ?")); - drivers.add(new DriverInfo("Microsoft SQL Server", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "jdbc:sqlserver://host:port;databaseName=dbname", "SELECT TOP 1 * FROM ?")); - drivers.add(new DriverInfo("SQLite", "org.sqlite.JDBC", "jdbc:sqlite:dbfile.db", "SELECT * FROM ? LIMIT 1")); + drivers.add(new DriverInfo("Oracle", "oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@host:port:dbname")); + drivers.add(new DriverInfo("PostgreSQL", "org.postgresql.Driver", "jdbc:postgresql://host:port/dbname")); + drivers.add(new DriverInfo("SQL Server/Sybase (jTDS)", "net.sourceforge.jtds.jdbc.Driver", "jdbc:jtds:sqlserver://host:port/dbname")); + drivers.add(new DriverInfo("Microsoft SQL Server", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "jdbc:sqlserver://host:port;databaseName=dbname")); + drivers.add(new DriverInfo("SQLite", "org.sqlite.JDBC", "jdbc:sqlite:dbfile.db")); return drivers; } @@ -80,10 +99,18 @@ public void setTemplate(String template) { this.template = template; } + /** + * @deprecated Unused. + */ + @Deprecated public String getSelectLimit() { return selectLimit; } + /** + * @deprecated Unused. + */ + @Deprecated public void setSelectLimit(String selectLimit) { this.selectLimit = selectLimit; } @@ -103,7 +130,6 @@ public String toString() { builder.append("name=" + getName() + ", "); builder.append("className=" + getClassName() + ", "); builder.append("template=" + getTemplate() + ", "); - builder.append("selectLimit=" + getSelectLimit() + ", "); builder.append("alternativeClassNames=" + getAlternativeClassNames()); builder.append("]"); return builder.toString(); @@ -111,6 +137,6 @@ public String toString() { @Override public boolean equals(Object obj) { - return EqualsBuilder.reflectionEquals(this, obj); + return EqualsBuilder.reflectionEquals(this, obj, "selectLimit"); } } diff --git a/server/src/main/java/com/mirth/connect/server/controllers/DefaultConfigurationController.java b/server/src/main/java/com/mirth/connect/server/controllers/DefaultConfigurationController.java index bfee2eddbf..0db23fdc78 100644 --- a/server/src/main/java/com/mirth/connect/server/controllers/DefaultConfigurationController.java +++ b/server/src/main/java/com/mirth/connect/server/controllers/DefaultConfigurationController.java @@ -728,7 +728,6 @@ List parseDbdriversXml(Reader reader) throws Exception { String name = StringUtils.trimToEmpty(driverElement.getAttribute("name")); String className = StringUtils.trimToEmpty(driverElement.getAttribute("class")); String template = StringUtils.trimToEmpty(driverElement.getAttribute("template")); - String selectLimit = StringUtils.trimToEmpty(driverElement.getAttribute("selectLimit")); String alternativeClasses = StringUtils.trimToEmpty(driverElement.getAttribute("alternativeClasses")); if (StringUtils.isNoneBlank(name, className, template)) { @@ -737,7 +736,7 @@ List parseDbdriversXml(Reader reader) throws Exception { alternativeClassNames.addAll(new ArrayList(Arrays.asList(StringUtils.split(alternativeClasses, ',')))); } - DriverInfo driver = new DriverInfo(name, className, template, selectLimit, alternativeClassNames); + DriverInfo driver = new DriverInfo(name, className, template, alternativeClassNames); logger.debug("Found database driver: " + driver); drivers.add(driver); } else { diff --git a/server/src/main/java/com/mirth/connect/server/servlets/SwaggerExamplesServlet.java b/server/src/main/java/com/mirth/connect/server/servlets/SwaggerExamplesServlet.java index 476775c82b..44998684bb 100644 --- a/server/src/main/java/com/mirth/connect/server/servlets/SwaggerExamplesServlet.java +++ b/server/src/main/java/com/mirth/connect/server/servlets/SwaggerExamplesServlet.java @@ -936,7 +936,7 @@ private DefinitionServiceMap getDefinitionServiceMapExample() { } private DriverInfo getDriverInfoExample() { - DriverInfo driverInfo = new DriverInfo("PostgreSQL", "org.postgresql.Driver", "jdbc:postgresql://host:port/dbname", "SELECT * FROM ? LIMIT 1", new ArrayList<>()); + DriverInfo driverInfo = new DriverInfo("PostgreSQL", "org.postgresql.Driver", "jdbc:postgresql://host:port/dbname", new ArrayList<>()); return driverInfo; } diff --git a/server/src/test/java/com/mirth/connect/server/controllers/DefaultConfigurationControllerTest.java b/server/src/test/java/com/mirth/connect/server/controllers/DefaultConfigurationControllerTest.java index 93072d30b0..336c528b03 100644 --- a/server/src/test/java/com/mirth/connect/server/controllers/DefaultConfigurationControllerTest.java +++ b/server/src/test/java/com/mirth/connect/server/controllers/DefaultConfigurationControllerTest.java @@ -70,7 +70,7 @@ protected void configure() { public void getDatabaseDrivers_NotBlank() throws Exception { DefaultConfigurationController configurationController = spy(new DefaultConfigurationController()); - String databaseDriversXml = DEFAULT_DRIVERS_XML; + String databaseDriversXml = LEGACY_DRIVERS_XML; doReturn(databaseDriversXml).when(configurationController).getProperty(any(), any()); List drivers = configurationController.getDatabaseDrivers(); @@ -87,7 +87,7 @@ public void getDatabaseDrivers_Blank() throws Exception { File testConfDir = new File("./testconf"); testConfDir.mkdir(); File dbDriversFile = new File(testConfDir, "dbdrivers.xml"); - FileUtils.writeStringToFile(dbDriversFile, DEFAULT_DBDRIVERS_FILE, "UTF-8", false); + FileUtils.writeStringToFile(dbDriversFile, LEGACY_DBDRIVERS_FILE, "UTF-8", false); doReturn(dbDriversFile).when(configurationController).getDbDriversFile(); List drivers = configurationController.getDatabaseDrivers(); @@ -210,13 +210,13 @@ public void setDatabaseDrivers() throws Exception { doNothing().when(configurationController).saveProperty(any(), any(), any()); List drivers = new ArrayList(); - drivers.add(new DriverInfo("MySQL", "com.mysql.cj.jdbc.Driver", "jdbc:mysql://host:port/dbname", "SELECT * FROM ? LIMIT 1", new ArrayList(Arrays.asList(new String[] { + drivers.add(new DriverInfo("MySQL", "com.mysql.cj.jdbc.Driver", "jdbc:mysql://host:port/dbname", new ArrayList(Arrays.asList(new String[] { "com.mysql.jdbc.Driver" })))); - drivers.add(new DriverInfo("Oracle", "oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@host:port:dbname", "SELECT * FROM ? WHERE ROWNUM < 2")); - drivers.add(new DriverInfo("PostgreSQL", "org.postgresql.Driver", "jdbc:postgresql://host:port/dbname", "SELECT * FROM ? LIMIT 1")); - drivers.add(new DriverInfo("SQL Server/Sybase (jTDS)", "net.sourceforge.jtds.jdbc.Driver", "jdbc:jtds:sqlserver://host:port/dbname", "SELECT TOP 1 * FROM ?")); - drivers.add(new DriverInfo("Microsoft SQL Server", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "jdbc:sqlserver://host:port;databaseName=dbname", "SELECT TOP 1 * FROM ?")); - drivers.add(new DriverInfo("SQLite", "org.sqlite.JDBC", "jdbc:sqlite:dbfile.db", "SELECT * FROM ? LIMIT 1")); + drivers.add(new DriverInfo("Oracle", "oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@host:port:dbname")); + drivers.add(new DriverInfo("PostgreSQL", "org.postgresql.Driver", "jdbc:postgresql://host:port/dbname")); + drivers.add(new DriverInfo("SQL Server/Sybase (jTDS)", "net.sourceforge.jtds.jdbc.Driver", "jdbc:jtds:sqlserver://host:port/dbname")); + drivers.add(new DriverInfo("Microsoft SQL Server", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "jdbc:sqlserver://host:port;databaseName=dbname")); + drivers.add(new DriverInfo("SQLite", "org.sqlite.JDBC", "jdbc:sqlite:dbfile.db")); configurationController.setDatabaseDrivers(drivers); @@ -283,7 +283,6 @@ private void assertDefaultDrivers(List drivers, boolean includeODBC) assertEquals("Sun JDBC-ODBC Bridge", drivers.get(i).getName()); assertEquals("sun.jdbc.odbc.JdbcOdbcDriver", drivers.get(i).getClassName()); assertEquals("jdbc:odbc:DSN", drivers.get(i).getTemplate()); - assertEquals("", drivers.get(i).getSelectLimit()); assertEquals(new ArrayList(), drivers.get(i).getAlternativeClassNames()); i++; } @@ -291,7 +290,6 @@ private void assertDefaultDrivers(List drivers, boolean includeODBC) assertEquals("MySQL", drivers.get(i).getName()); assertEquals("com.mysql.cj.jdbc.Driver", drivers.get(i).getClassName()); assertEquals("jdbc:mysql://host:port/dbname", drivers.get(i).getTemplate()); - assertEquals("SELECT * FROM ? LIMIT 1", drivers.get(i).getSelectLimit()); assertEquals(Arrays.asList(new String[] { "com.mysql.jdbc.Driver" }), drivers.get(i).getAlternativeClassNames()); i++; @@ -299,35 +297,30 @@ private void assertDefaultDrivers(List drivers, boolean includeODBC) assertEquals("Oracle", drivers.get(i).getName()); assertEquals("oracle.jdbc.driver.OracleDriver", drivers.get(i).getClassName()); assertEquals("jdbc:oracle:thin:@host:port:dbname", drivers.get(i).getTemplate()); - assertEquals("SELECT * FROM ? WHERE ROWNUM < 2", drivers.get(i).getSelectLimit()); assertEquals(new ArrayList(), drivers.get(i).getAlternativeClassNames()); i++; assertEquals("PostgreSQL", drivers.get(i).getName()); assertEquals("org.postgresql.Driver", drivers.get(i).getClassName()); assertEquals("jdbc:postgresql://host:port/dbname", drivers.get(i).getTemplate()); - assertEquals("SELECT * FROM ? LIMIT 1", drivers.get(i).getSelectLimit()); assertEquals(new ArrayList(), drivers.get(i).getAlternativeClassNames()); i++; assertEquals("SQL Server/Sybase (jTDS)", drivers.get(i).getName()); assertEquals("net.sourceforge.jtds.jdbc.Driver", drivers.get(i).getClassName()); assertEquals("jdbc:jtds:sqlserver://host:port/dbname", drivers.get(i).getTemplate()); - assertEquals("SELECT TOP 1 * FROM ?", drivers.get(i).getSelectLimit()); assertEquals(new ArrayList(), drivers.get(i).getAlternativeClassNames()); i++; assertEquals("Microsoft SQL Server", drivers.get(i).getName()); assertEquals("com.microsoft.sqlserver.jdbc.SQLServerDriver", drivers.get(i).getClassName()); assertEquals("jdbc:sqlserver://host:port;databaseName=dbname", drivers.get(i).getTemplate()); - assertEquals("SELECT TOP 1 * FROM ?", drivers.get(i).getSelectLimit()); assertEquals(new ArrayList(), drivers.get(i).getAlternativeClassNames()); i++; assertEquals("SQLite", drivers.get(i).getName()); assertEquals("org.sqlite.JDBC", drivers.get(i).getClassName()); assertEquals("jdbc:sqlite:dbfile.db", drivers.get(i).getTemplate()); - assertEquals("SELECT * FROM ? LIMIT 1", drivers.get(i).getSelectLimit()); assertEquals(new ArrayList(), drivers.get(i).getAlternativeClassNames()); } @@ -343,6 +336,47 @@ private String normalizeXml(String xml) throws Exception { // @formatter:off private String DEFAULT_DRIVERS_XML = "\n" + + " \n" + + " com.mysql.cj.jdbc.Driver\n" + + " MySQL\n" + + " \n" + + " \n" + + " com.mysql.jdbc.Driver\n" + + " \n" + + " \n" + + " \n" + + " oracle.jdbc.driver.OracleDriver\n" + + " Oracle\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " org.postgresql.Driver\n" + + " PostgreSQL\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " net.sourceforge.jtds.jdbc.Driver\n" + + " SQL Server/Sybase (jTDS)\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " com.microsoft.sqlserver.jdbc.SQLServerDriver\n" + + " Microsoft SQL Server\n" + + " \n" + + " \n" + + " \n" + + " \n" + + " org.sqlite.JDBC\n" + + " SQLite\n" + + " \n" + + " \n" + + " \n" + + "\n"; + + private String LEGACY_DRIVERS_XML = "\n" + " \n" + " com.mysql.cj.jdbc.Driver\n" + " MySQL\n" + @@ -389,7 +423,7 @@ private String normalizeXml(String xml) throws Exception { " \n" + "\n"; - private String DEFAULT_DBDRIVERS_FILE = "\n"+ + private String LEGACY_DBDRIVERS_FILE = "\n"+ " \n"+ " \n" + " \n" + diff --git a/server/src/test/java/com/mirth/connect/server/migration/Migrate3_8_0Test.java b/server/src/test/java/com/mirth/connect/server/migration/Migrate3_8_0Test.java index 51f65927fb..7bf6723c0e 100644 --- a/server/src/test/java/com/mirth/connect/server/migration/Migrate3_8_0Test.java +++ b/server/src/test/java/com/mirth/connect/server/migration/Migrate3_8_0Test.java @@ -77,12 +77,12 @@ public void migrate_NoChanges() throws Exception { @Test public void migrate_Updated() throws Exception { List drivers = new ArrayList(); - drivers.add(new DriverInfo("Sun JDBC-ODBC Bridge", "sun.jdbc.odbc.JdbcOdbcDriver", "jdbc:odbc:DSN", "")); - drivers.add(new DriverInfo("MySQL", "com.mysql.jdbc.Driver", "jdbc:mysql://host:port/dbname", "SELECT * FROM ? LIMIT 1")); - drivers.add(new DriverInfo("Oracle", "oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@host:port:dbname", "SELECT * FROM ? WHERE ROWNUM < 2")); - drivers.add(new DriverInfo("PostgreSQL", "org.postgresql.Driver", "jdbc:postgresql://host:port/dbname", "SELECT * FROM ? LIMIT 1")); - drivers.add(new DriverInfo("SQL Server/Sybase", "net.sourceforge.jtds.jdbc.Driver", "jdbc:jtds:sqlserver://host:port/dbname", "SELECT TOP 1 * FROM ?")); - drivers.add(new DriverInfo("SQLite", "org.sqlite.JDBC", "jdbc:sqlite:dbfile.db", "SELECT * FROM ? LIMIT 1")); + drivers.add(new DriverInfo("Sun JDBC-ODBC Bridge", "sun.jdbc.odbc.JdbcOdbcDriver", "jdbc:odbc:DSN")); + drivers.add(new DriverInfo("MySQL", "com.mysql.jdbc.Driver", "jdbc:mysql://host:port/dbname")); + drivers.add(new DriverInfo("Oracle", "oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@host:port:dbname")); + drivers.add(new DriverInfo("PostgreSQL", "org.postgresql.Driver", "jdbc:postgresql://host:port/dbname")); + drivers.add(new DriverInfo("SQL Server/Sybase", "net.sourceforge.jtds.jdbc.Driver", "jdbc:jtds:sqlserver://host:port/dbname")); + drivers.add(new DriverInfo("SQLite", "org.sqlite.JDBC", "jdbc:sqlite:dbfile.db")); when(configurationController.getDatabaseDrivers()).thenReturn(new ArrayList(drivers)); @@ -104,12 +104,12 @@ public void migrate_Updated() throws Exception { private List getDefaultDrivers() { List drivers = new ArrayList(); - drivers.add(new DriverInfo("MySQL", "com.mysql.cj.jdbc.Driver", "jdbc:mysql://host:port/dbname", "SELECT * FROM ? LIMIT 1", new ArrayList(Arrays.asList(new String[] { + drivers.add(new DriverInfo("MySQL", "com.mysql.cj.jdbc.Driver", "jdbc:mysql://host:port/dbname", new ArrayList(Arrays.asList(new String[] { "com.mysql.jdbc.Driver" })))); - drivers.add(new DriverInfo("Oracle", "oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@host:port:dbname", "SELECT * FROM ? WHERE ROWNUM < 2")); - drivers.add(new DriverInfo("PostgreSQL", "org.postgresql.Driver", "jdbc:postgresql://host:port/dbname", "SELECT * FROM ? LIMIT 1")); - drivers.add(new DriverInfo("SQL Server/Sybase", "net.sourceforge.jtds.jdbc.Driver", "jdbc:jtds:sqlserver://host:port/dbname", "SELECT TOP 1 * FROM ?")); - drivers.add(new DriverInfo("SQLite", "org.sqlite.JDBC", "jdbc:sqlite:dbfile.db", "SELECT * FROM ? LIMIT 1")); + drivers.add(new DriverInfo("Oracle", "oracle.jdbc.driver.OracleDriver", "jdbc:oracle:thin:@host:port:dbname")); + drivers.add(new DriverInfo("PostgreSQL", "org.postgresql.Driver", "jdbc:postgresql://host:port/dbname")); + drivers.add(new DriverInfo("SQL Server/Sybase", "net.sourceforge.jtds.jdbc.Driver", "jdbc:jtds:sqlserver://host:port/dbname")); + drivers.add(new DriverInfo("SQLite", "org.sqlite.JDBC", "jdbc:sqlite:dbfile.db")); return drivers; } } diff --git a/smoketest/src/test/java/org/openintegrationengine/smoketest/DatabaseMetadataTest.java b/smoketest/src/test/java/org/openintegrationengine/smoketest/DatabaseMetadataTest.java index 03ab8943dd..1a5135ba5b 100644 --- a/smoketest/src/test/java/org/openintegrationengine/smoketest/DatabaseMetadataTest.java +++ b/smoketest/src/test/java/org/openintegrationengine/smoketest/DatabaseMetadataTest.java @@ -96,7 +96,7 @@ private static SortedSet
getTables(Set patterns) throws Exception SortedSet
tables = SharedServer.get() .servlet(DatabaseConnectorServletInterface.class) .getTables("smoketest", "smoketest", HarnessConfig.DB_DRIVER, HarnessConfig.DB_URL, - HarnessConfig.DB_USERNAME, HarnessConfig.DB_PASSWORD, patterns, null, Collections.emptySet()); + HarnessConfig.DB_USERNAME, HarnessConfig.DB_PASSWORD, patterns, Collections.emptySet()); return tables == null ? new TreeSet
() : tables; }