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; }