From 4b857d45d33a33bdfba947b1714d2f8c5570e69c Mon Sep 17 00:00:00 2001 From: Adam Korynta Date: Tue, 29 Oct 2024 09:04:04 -0700 Subject: [PATCH 1/6] refactor testcontainers configuration implementation to fixtures --- integrationtesting/fixtures/build.gradle | 18 ++++++++++++++++-- .../fixtures}/configuration/Configuration.java | 4 ++-- .../configuration/ConfigurationProvider.java | 2 +- .../configuration}/UserPropertiesBuilder.java | 2 +- .../cwms/CwmsOracleConfiguration.java | 12 ++++++------ .../cwms/CwmsOracleConfigurationProvider.java | 6 +++--- .../opendcs/pg/OpenDCSPGConfiguration.java | 12 +++++------- .../pg/OpenDCSPGConfigurationProvider.java | 6 +++--- .../configuration}/xml/XmlConfiguration.java | 9 +++------ .../xml/XmlConfigurationProvider.java | 6 +++--- ...ixtures.configuration.ConfigurationProvider | 3 +++ integrationtesting/opendcs-tests/build.gradle | 6 ------ .../java/org/opendcs/fixtures/AppTestBase.java | 6 +----- .../fixtures/OpenDCSTestConfigExtension.java | 4 ++-- .../EnableIfAppsSupportedCondition.java | 2 +- .../annotations/EnableIfDaoSupported.java | 4 +--- .../fixtures/annotations/EnableIfSql.java | 2 +- .../fixtures/annotations/EnableIfTsDb.java | 2 +- .../fixtures/helpers/TestResources.java | 2 +- .../regression_tests/CompProcTestIT.java | 3 +-- .../opendcs/regression_tests/DecodesTest.java | 2 +- ...dcs.spi.configuration.ConfigurationProvider | 3 --- 22 files changed, 56 insertions(+), 60 deletions(-) rename integrationtesting/{opendcs-tests/src/test/java/org/opendcs/spi => fixtures/src/main/java/org/opendcs/fixtures}/configuration/Configuration.java (94%) rename integrationtesting/{opendcs-tests/src/test/java/org/opendcs/spi => fixtures/src/main/java/org/opendcs/fixtures}/configuration/ConfigurationProvider.java (92%) rename integrationtesting/{opendcs-tests/src/test/java/org/opendcs/fixtures => fixtures/src/main/java/org/opendcs/fixtures/configuration}/UserPropertiesBuilder.java (99%) rename integrationtesting/{opendcs-tests/src/test/java/org/opendcs/fixtures/configurations => fixtures/src/main/java/org/opendcs/fixtures/configuration}/cwms/CwmsOracleConfiguration.java (95%) rename integrationtesting/{opendcs-tests/src/test/java/org/opendcs/fixtures/configurations => fixtures/src/main/java/org/opendcs/fixtures/configuration}/cwms/CwmsOracleConfigurationProvider.java (70%) rename integrationtesting/{opendcs-tests/src/test/java/org/opendcs/fixtures/configurations => fixtures/src/main/java/org/opendcs/fixtures/configuration}/opendcs/pg/OpenDCSPGConfiguration.java (96%) rename integrationtesting/{opendcs-tests/src/test/java/org/opendcs/fixtures/configurations => fixtures/src/main/java/org/opendcs/fixtures/configuration}/opendcs/pg/OpenDCSPGConfigurationProvider.java (69%) rename integrationtesting/{opendcs-tests/src/test/java/org/opendcs/fixtures/configurations => fixtures/src/main/java/org/opendcs/fixtures/configuration}/xml/XmlConfiguration.java (92%) rename integrationtesting/{opendcs-tests/src/test/java/org/opendcs/fixtures/configurations => fixtures/src/main/java/org/opendcs/fixtures/configuration}/xml/XmlConfigurationProvider.java (69%) create mode 100644 integrationtesting/fixtures/src/main/resources/META-INF/services/org.opendcs.fixtures.configuration.ConfigurationProvider delete mode 100644 integrationtesting/opendcs-tests/src/test/resources/META-INF/services/org.opendcs.spi.configuration.ConfigurationProvider diff --git a/integrationtesting/fixtures/build.gradle b/integrationtesting/fixtures/build.gradle index 3fdedf8840..855b59ca1d 100644 --- a/integrationtesting/fixtures/build.gradle +++ b/integrationtesting/fixtures/build.gradle @@ -1,13 +1,27 @@ plugins { id 'opendcs.java-conventions' id 'opendcs.deps-conventions' + id 'opendcs.publishing-conventions' } dependencies { api project(":opendcs") - api enforcedPlatform(libs.junit.bom) + api platform(libs.junit.bom) api(libs.bundles.junit) api(libs.commons.io) api(libs.apache.derby) api(libs.webcompere.system.stubs.jupiter) -} \ No newline at end of file + api(libs.testcontainers.core) + api(libs.testcontainers.postgresql) + api(libs.hec.testcontainers.cwms) + api(libs.bundles.jdbi) +} + +publishing { + publications { + mavenJava(MavenPublication) { + artifactId = 'opendcs-integrationtesting-fixtures' + from components.java + } + } +} diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/spi/configuration/Configuration.java b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/Configuration.java similarity index 94% rename from integrationtesting/opendcs-tests/src/test/java/org/opendcs/spi/configuration/Configuration.java rename to integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/Configuration.java index 7b0fa7d864..101e47469b 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/spi/configuration/Configuration.java +++ b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/Configuration.java @@ -1,4 +1,4 @@ -package org.opendcs.spi.configuration; +package org.opendcs.fixtures.configuration; import java.io.File; import java.util.Map; @@ -74,7 +74,7 @@ default public TimeSeriesDb getTsdb() throws Throwable } /** - * Returns an independent instance of the {@decodes.db.Database} Decodes Database for this configuration. + * Returns an independent instance of the {@link decodes.db.Database} Decodes Database for this configuration. * * @return Instance of the Decodes Database for this run/test. * @throws Throwable diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/spi/configuration/ConfigurationProvider.java b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/ConfigurationProvider.java similarity index 92% rename from integrationtesting/opendcs-tests/src/test/java/org/opendcs/spi/configuration/ConfigurationProvider.java rename to integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/ConfigurationProvider.java index 1335056892..dc1e230485 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/spi/configuration/ConfigurationProvider.java +++ b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/ConfigurationProvider.java @@ -1,4 +1,4 @@ -package org.opendcs.spi.configuration; +package org.opendcs.fixtures.configuration; import java.io.File; diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/UserPropertiesBuilder.java b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/UserPropertiesBuilder.java similarity index 99% rename from integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/UserPropertiesBuilder.java rename to integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/UserPropertiesBuilder.java index 2aec0dfed8..b3c2c0eece 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/UserPropertiesBuilder.java +++ b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/UserPropertiesBuilder.java @@ -1,4 +1,4 @@ -package org.opendcs.fixtures; +package org.opendcs.fixtures.configuration; import java.io.IOException; import java.io.OutputStream; diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/cwms/CwmsOracleConfiguration.java b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/cwms/CwmsOracleConfiguration.java similarity index 95% rename from integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/cwms/CwmsOracleConfiguration.java rename to integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/cwms/CwmsOracleConfiguration.java index cf41fba4ed..065f52f81c 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/cwms/CwmsOracleConfiguration.java +++ b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/cwms/CwmsOracleConfiguration.java @@ -1,4 +1,4 @@ -package org.opendcs.fixtures.configurations.cwms; +package org.opendcs.fixtures.configuration.cwms; import java.io.File; import java.io.FileOutputStream; @@ -12,11 +12,10 @@ import org.apache.commons.io.FileUtils; import org.opendcs.database.DatabaseService; import org.opendcs.database.api.OpenDcsDatabase; -import org.opendcs.fixtures.UserPropertiesBuilder; -import org.opendcs.fixtures.configurations.opendcs.pg.OpenDCSPGConfiguration; -import org.opendcs.spi.configuration.Configuration; +import org.opendcs.fixtures.configuration.UserPropertiesBuilder; +import org.opendcs.fixtures.configuration.opendcs.pg.OpenDCSPGConfiguration; +import org.opendcs.fixtures.configuration.Configuration; -import decodes.cwms.CwmsTimeSeriesDb; import decodes.db.Database; import decodes.launcher.Profile; import decodes.sql.OracleSequenceKeyGenerator; @@ -24,7 +23,6 @@ import decodes.tsdb.TimeSeriesDb; import decodes.tsdb.TsdbAppTemplate; import decodes.util.DecodesSettings; -import ilex.util.Pair; import mil.army.usace.hec.test.database.CwmsDatabaseContainer; import opendcs.dao.CompDependsDAO; import opendcs.dao.DaoBase; @@ -77,8 +75,10 @@ private void installDb(SystemExit exit,EnvironmentVariables environment) throws dcsUserPassword = System.getProperty("opendcs.cwms.dcsuser.password",cwmsDb.getPassword()); environment.set("DB_USERNAME",dcsUser); environment.set("DB_PASSWORD",dcsUserPassword); + environment.set("DB_URL",dbUrl); environmentVars.put("DB_USERNAME",dcsUser); environmentVars.put("DB_PASSWORD",dcsUserPassword); + environmentVars.put("DB_URL",dbUrl); started = true; //TODO strip/reinstall schema } diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/cwms/CwmsOracleConfigurationProvider.java b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/cwms/CwmsOracleConfigurationProvider.java similarity index 70% rename from integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/cwms/CwmsOracleConfigurationProvider.java rename to integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/cwms/CwmsOracleConfigurationProvider.java index 0e13bfb238..f841574650 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/cwms/CwmsOracleConfigurationProvider.java +++ b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/cwms/CwmsOracleConfigurationProvider.java @@ -1,9 +1,9 @@ -package org.opendcs.fixtures.configurations.cwms; +package org.opendcs.fixtures.configuration.cwms; import java.io.File; -import org.opendcs.spi.configuration.Configuration; -import org.opendcs.spi.configuration.ConfigurationProvider; +import org.opendcs.fixtures.configuration.Configuration; +import org.opendcs.fixtures.configuration.ConfigurationProvider; public class CwmsOracleConfigurationProvider implements ConfigurationProvider { diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/opendcs/pg/OpenDCSPGConfiguration.java b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/opendcs/pg/OpenDCSPGConfiguration.java similarity index 96% rename from integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/opendcs/pg/OpenDCSPGConfiguration.java rename to integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/opendcs/pg/OpenDCSPGConfiguration.java index 5bd8707666..d3456199aa 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/opendcs/pg/OpenDCSPGConfiguration.java +++ b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/opendcs/pg/OpenDCSPGConfiguration.java @@ -1,4 +1,4 @@ -package org.opendcs.fixtures.configurations.opendcs.pg; +package org.opendcs.fixtures.configuration.opendcs.pg; import static org.junit.jupiter.api.Assertions.fail; @@ -23,27 +23,23 @@ import org.opendcs.database.api.OpenDcsDatabase; import org.opendcs.database.SimpleDataSource; import org.opendcs.database.impl.opendcs.OpenDcsPgProvider; -import org.opendcs.fixtures.UserPropertiesBuilder; -import org.opendcs.fixtures.helpers.Programs; -import org.opendcs.spi.configuration.Configuration; +import org.opendcs.fixtures.configuration.Configuration; +import org.opendcs.fixtures.configuration.UserPropertiesBuilder; import org.opendcs.spi.database.MigrationProvider; import org.testcontainers.containers.PostgreSQLContainer; import decodes.db.Database; import decodes.launcher.Profile; -import decodes.sql.DecodesDatabaseVersion; import decodes.sql.SequenceKeyGenerator; import decodes.tsdb.ComputationApp; import decodes.tsdb.TimeSeriesDb; import decodes.tsdb.TsdbAppTemplate; import decodes.util.DecodesSettings; import ilex.util.FileLogger; -import ilex.util.Pair; import opendcs.dao.CompDependsDAO; import opendcs.dao.DaoBase; import opendcs.dao.LoadingAppDao; import opendcs.dao.XmitRecordDAO; -import opendcs.opentsdb.OpenTsdb; import uk.org.webcompere.systemstubs.environment.EnvironmentVariables; import uk.org.webcompere.systemstubs.properties.SystemProperties; import uk.org.webcompere.systemstubs.security.SystemExit; @@ -134,6 +130,8 @@ private void installDb(SystemExit exit,EnvironmentVariables environment, SystemP } db.start(); + environmentVars.put("DB_URL",db.getJdbcUrl()); + environment.set("DB_URL",db.getJdbcUrl()); createPropertiesFile(configBuilder, this.propertiesFile); profile = Profile.getProfile(this.propertiesFile); DataSource ds = new SimpleDataSource(db.getJdbcUrl(),db.getUsername(),db.getPassword()); diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/opendcs/pg/OpenDCSPGConfigurationProvider.java b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/opendcs/pg/OpenDCSPGConfigurationProvider.java similarity index 69% rename from integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/opendcs/pg/OpenDCSPGConfigurationProvider.java rename to integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/opendcs/pg/OpenDCSPGConfigurationProvider.java index 5abd24346a..99fa57066f 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/opendcs/pg/OpenDCSPGConfigurationProvider.java +++ b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/opendcs/pg/OpenDCSPGConfigurationProvider.java @@ -1,9 +1,9 @@ -package org.opendcs.fixtures.configurations.opendcs.pg; +package org.opendcs.fixtures.configuration.opendcs.pg; import java.io.File; -import org.opendcs.spi.configuration.Configuration; -import org.opendcs.spi.configuration.ConfigurationProvider; +import org.opendcs.fixtures.configuration.Configuration; +import org.opendcs.fixtures.configuration.ConfigurationProvider; public class OpenDCSPGConfigurationProvider implements ConfigurationProvider { diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/xml/XmlConfiguration.java b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/xml/XmlConfiguration.java similarity index 92% rename from integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/xml/XmlConfiguration.java rename to integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/xml/XmlConfiguration.java index d7cfac1852..2792cc3c61 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/xml/XmlConfiguration.java +++ b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/xml/XmlConfiguration.java @@ -1,4 +1,4 @@ -package org.opendcs.fixtures.configurations.xml; +package org.opendcs.fixtures.configuration.xml; import java.io.File; import java.io.FileOutputStream; @@ -10,15 +10,12 @@ import org.apache.commons.io.FileUtils; import org.opendcs.database.DatabaseService; import org.opendcs.database.api.OpenDcsDatabase; -import org.opendcs.fixtures.UserPropertiesBuilder; -import org.opendcs.spi.configuration.Configuration; +import org.opendcs.fixtures.configuration.Configuration; import decodes.db.Database; -import decodes.db.DatabaseIO; import decodes.launcher.Profile; -import decodes.tsdb.TimeSeriesDb; import decodes.util.DecodesSettings; -import ilex.util.Pair; +import org.opendcs.fixtures.configuration.UserPropertiesBuilder; import uk.org.webcompere.systemstubs.environment.EnvironmentVariables; import uk.org.webcompere.systemstubs.properties.SystemProperties; import uk.org.webcompere.systemstubs.security.SystemExit; diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/xml/XmlConfigurationProvider.java b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/xml/XmlConfigurationProvider.java similarity index 69% rename from integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/xml/XmlConfigurationProvider.java rename to integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/xml/XmlConfigurationProvider.java index aa43e53670..06560f2210 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/configurations/xml/XmlConfigurationProvider.java +++ b/integrationtesting/fixtures/src/main/java/org/opendcs/fixtures/configuration/xml/XmlConfigurationProvider.java @@ -1,9 +1,9 @@ -package org.opendcs.fixtures.configurations.xml; +package org.opendcs.fixtures.configuration.xml; import java.io.File; -import org.opendcs.spi.configuration.Configuration; -import org.opendcs.spi.configuration.ConfigurationProvider; +import org.opendcs.fixtures.configuration.Configuration; +import org.opendcs.fixtures.configuration.ConfigurationProvider; public class XmlConfigurationProvider implements ConfigurationProvider { diff --git a/integrationtesting/fixtures/src/main/resources/META-INF/services/org.opendcs.fixtures.configuration.ConfigurationProvider b/integrationtesting/fixtures/src/main/resources/META-INF/services/org.opendcs.fixtures.configuration.ConfigurationProvider new file mode 100644 index 0000000000..92dc3b99c1 --- /dev/null +++ b/integrationtesting/fixtures/src/main/resources/META-INF/services/org.opendcs.fixtures.configuration.ConfigurationProvider @@ -0,0 +1,3 @@ +org.opendcs.fixtures.configuration.xml.XmlConfigurationProvider +org.opendcs.fixtures.configuration.opendcs.pg.OpenDCSPGConfigurationProvider +org.opendcs.fixtures.configuration.cwms.CwmsOracleConfigurationProvider \ No newline at end of file diff --git a/integrationtesting/opendcs-tests/build.gradle b/integrationtesting/opendcs-tests/build.gradle index f7fab4254f..5619786ba4 100644 --- a/integrationtesting/opendcs-tests/build.gradle +++ b/integrationtesting/opendcs-tests/build.gradle @@ -9,14 +9,8 @@ dependencies { testCompileOnly project(":opendcs") testImplementation project(":testing:fixtures") testImplementation enforcedPlatform(libs.junit.bom) - testImplementation(libs.testcontainers.core) - testImplementation(libs.testcontainers.postgresql) - testImplementation(libs.hec.testcontainers.cwms) - testImplementation(libs.bundles.jdbi) testImplementation(libs.bundles.junit) testImplementation(libs.bundles.junit.platform) - testImplementation(libs.commons.io) - testImplementation(libs.apache.derby) testImplementation(libs.fasterxml.jackson.databind) testImplementation(libs.webcompere.system.stubs.jupiter) } diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/AppTestBase.java b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/AppTestBase.java index ca7df0282b..093f243f2e 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/AppTestBase.java +++ b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/AppTestBase.java @@ -2,16 +2,12 @@ import static org.junit.jupiter.api.Assertions.assertTrue; -import java.io.File; - import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; import org.junit.jupiter.api.extension.ExtendWith; import org.opendcs.fixtures.annotations.ConfiguredField; -import org.opendcs.fixtures.helpers.TestResources; -import org.opendcs.spi.configuration.Configuration; +import org.opendcs.fixtures.configuration.Configuration; -import ilex.util.EnvExpander; import uk.org.webcompere.systemstubs.environment.EnvironmentVariables; import uk.org.webcompere.systemstubs.jupiter.SystemStub; import uk.org.webcompere.systemstubs.jupiter.SystemStubsExtension; diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/OpenDCSTestConfigExtension.java b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/OpenDCSTestConfigExtension.java index f9b7a24169..0c02a3df8b 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/OpenDCSTestConfigExtension.java +++ b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/OpenDCSTestConfigExtension.java @@ -30,8 +30,8 @@ import org.opendcs.fixtures.helpers.BackgroundTsDbApp; import org.opendcs.fixtures.helpers.Programs; import org.opendcs.fixtures.helpers.TestResources; -import org.opendcs.spi.configuration.Configuration; -import org.opendcs.spi.configuration.ConfigurationProvider; +import org.opendcs.fixtures.configuration.Configuration; +import org.opendcs.fixtures.configuration.ConfigurationProvider; import decodes.db.Database; import decodes.tsdb.TimeSeriesDb; diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfAppsSupportedCondition.java b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfAppsSupportedCondition.java index 803f365107..d04270d073 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfAppsSupportedCondition.java +++ b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfAppsSupportedCondition.java @@ -8,7 +8,7 @@ import org.junit.jupiter.api.extension.ExecutionCondition; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.platform.commons.support.AnnotationSupport; -import org.opendcs.spi.configuration.Configuration; +import org.opendcs.fixtures.configuration.Configuration; /** * Simple check to help avoid methods getting called in implementations diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfDaoSupported.java b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfDaoSupported.java index 257308de06..f32e5679a7 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfDaoSupported.java +++ b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfDaoSupported.java @@ -1,9 +1,7 @@ package org.opendcs.fixtures.annotations; -import java.lang.annotation.Annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; -import java.lang.annotation.Repeatable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @@ -16,7 +14,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.platform.commons.support.AnnotationSupport; -import org.opendcs.spi.configuration.Configuration; +import org.opendcs.fixtures.configuration.Configuration; import opendcs.dao.DaoBase; diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfSql.java b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfSql.java index e324baf1dc..c10db43d1c 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfSql.java +++ b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfSql.java @@ -12,7 +12,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.platform.commons.support.AnnotationSupport; -import org.opendcs.spi.configuration.Configuration; +import org.opendcs.fixtures.configuration.Configuration; /** * Only run this test if the database under test is a SQL based database diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfTsDb.java b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfTsDb.java index df758fb05f..78c7b3e23b 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfTsDb.java +++ b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/annotations/EnableIfTsDb.java @@ -14,7 +14,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.platform.commons.support.AnnotationSupport; -import org.opendcs.spi.configuration.Configuration; +import org.opendcs.fixtures.configuration.Configuration; /** * Only run this test if the database under test is a SQL based database diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/helpers/TestResources.java b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/helpers/TestResources.java index 1abeb82b56..bf8d98edcf 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/helpers/TestResources.java +++ b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/fixtures/helpers/TestResources.java @@ -5,7 +5,7 @@ import java.io.IOException; import java.io.InputStream; -import org.opendcs.spi.configuration.Configuration; +import org.opendcs.fixtures.configuration.Configuration; import ilex.util.EnvExpander; diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/regression_tests/CompProcTestIT.java b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/regression_tests/CompProcTestIT.java index c7b4baff58..9bf2b3948d 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/regression_tests/CompProcTestIT.java +++ b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/regression_tests/CompProcTestIT.java @@ -20,12 +20,11 @@ import org.opendcs.fixtures.annotations.ComputationConfigurationRequired; import org.opendcs.fixtures.annotations.ConfiguredField; import org.opendcs.fixtures.annotations.DecodesConfigurationRequired; -import org.opendcs.fixtures.annotations.EnableIfTsDb; import org.opendcs.fixtures.annotations.TsdbAppRequired; import org.opendcs.fixtures.assertions.Waiting; import org.opendcs.fixtures.helpers.BackgroundTsDbApp; import org.opendcs.fixtures.helpers.Programs; -import org.opendcs.spi.configuration.Configuration; +import org.opendcs.fixtures.configuration.Configuration; import decodes.sql.DbKey; import decodes.sql.KeyGenerator; diff --git a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/regression_tests/DecodesTest.java b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/regression_tests/DecodesTest.java index 08b4a04eaa..6793fc50e7 100644 --- a/integrationtesting/opendcs-tests/src/test/java/org/opendcs/regression_tests/DecodesTest.java +++ b/integrationtesting/opendcs-tests/src/test/java/org/opendcs/regression_tests/DecodesTest.java @@ -11,7 +11,7 @@ import org.opendcs.fixtures.AppTestBase; import org.opendcs.fixtures.annotations.DecodesConfigurationRequired; import org.opendcs.fixtures.helpers.TestResources; -import org.opendcs.spi.configuration.Configuration; +import org.opendcs.fixtures.configuration.Configuration; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/integrationtesting/opendcs-tests/src/test/resources/META-INF/services/org.opendcs.spi.configuration.ConfigurationProvider b/integrationtesting/opendcs-tests/src/test/resources/META-INF/services/org.opendcs.spi.configuration.ConfigurationProvider deleted file mode 100644 index 8ee564f7dd..0000000000 --- a/integrationtesting/opendcs-tests/src/test/resources/META-INF/services/org.opendcs.spi.configuration.ConfigurationProvider +++ /dev/null @@ -1,3 +0,0 @@ -org.opendcs.fixtures.configurations.xml.XmlConfigurationProvider -org.opendcs.fixtures.configurations.opendcs.pg.OpenDCSPGConfigurationProvider -org.opendcs.fixtures.configurations.cwms.CwmsOracleConfigurationProvider \ No newline at end of file From 16c2521029962902d72c7bce02672aa836b1b912 Mon Sep 17 00:00:00 2001 From: Adam Korynta Date: Tue, 3 Dec 2024 11:10:59 -0800 Subject: [PATCH 2/6] fix publishings that got dropped in the merge --- java/annotations/build.gradle | 2 -- java/opendcs-api/build.gradle | 2 +- java/opendcs/build.gradle | 13 +++++++++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/java/annotations/build.gradle b/java/annotations/build.gradle index 749b405718..7a9cb53af7 100644 --- a/java/annotations/build.gradle +++ b/java/annotations/build.gradle @@ -16,7 +16,5 @@ publishing { artifactId = 'opendcs-annotations' from components.java } - - } } \ No newline at end of file diff --git a/java/opendcs-api/build.gradle b/java/opendcs-api/build.gradle index badb130476..f83153e9ff 100644 --- a/java/opendcs-api/build.gradle +++ b/java/opendcs-api/build.gradle @@ -11,7 +11,7 @@ plugins { publishing { publications { maven(MavenPublication) { - artifactId = 'opendcs-annotations' + artifactId = 'opendcs-api' from components.java } } diff --git a/java/opendcs/build.gradle b/java/opendcs/build.gradle index d8f0ebf341..c68f1a3a8e 100644 --- a/java/opendcs/build.gradle +++ b/java/opendcs/build.gradle @@ -2,7 +2,7 @@ plugins { id 'opendcs.deps-conventions' id 'opendcs.java-conventions' - id 'java-library' + id 'opendcs.publishing-conventions' } configurations { @@ -123,4 +123,13 @@ test.dependsOn jar javadoc { options.addBooleanOption('Xdoclint:none', true) source("8") -} \ No newline at end of file +} + +publishing { + publications { + mavenJava(MavenPublication) { + artifactId = 'opendcs' + from components.java + } + } +} From 347c9f1578adcd1a692ba2495cd451f1e1ea51e1 Mon Sep 17 00:00:00 2001 From: Adam Korynta Date: Tue, 3 Dec 2024 11:23:20 -0800 Subject: [PATCH 3/6] add OpenDcsDao interface to DAI structure --- java/opendcs/src/main/java/opendcs/dai/DaiBase.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java/opendcs/src/main/java/opendcs/dai/DaiBase.java b/java/opendcs/src/main/java/opendcs/dai/DaiBase.java index 0de71034f1..28ab5f4c39 100644 --- a/java/opendcs/src/main/java/opendcs/dai/DaiBase.java +++ b/java/opendcs/src/main/java/opendcs/dai/DaiBase.java @@ -8,8 +8,9 @@ import opendcs.dao.DaoBase; import opendcs.dao.DaoHelper; import opendcs.util.functional.DaoConsumer; +import org.opendcs.database.api.OpenDcsDao; -public interface DaiBase extends AutoCloseable +public interface DaiBase extends AutoCloseable, OpenDcsDao { /** * From 71dfe0cc91a226e3aa36ba52838ce158fd6a1318 Mon Sep 17 00:00:00 2001 From: Adam Korynta Date: Tue, 3 Dec 2024 12:03:37 -0800 Subject: [PATCH 4/6] add interface for REST API lookup --- java/opendcs/src/main/java/opendcs/dai/EnumDAI.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/opendcs/src/main/java/opendcs/dai/EnumDAI.java b/java/opendcs/src/main/java/opendcs/dai/EnumDAI.java index 09fdc653c1..3a1d1b6f0d 100644 --- a/java/opendcs/src/main/java/opendcs/dai/EnumDAI.java +++ b/java/opendcs/src/main/java/opendcs/dai/EnumDAI.java @@ -8,13 +8,13 @@ import decodes.db.DbEnum; import decodes.db.EnumList; import decodes.tsdb.DbIoException; +import org.opendcs.database.api.OpenDcsDao; /** * Data Access Interface for database-resident enumerations * @author mmaloney Mike Maloney */ -public interface EnumDAI - extends AutoCloseable +public interface EnumDAI extends AutoCloseable, OpenDcsDao { public DbEnum getEnum(String enumName) throws DbIoException; From adb07c744fa10d359220a5e9734f9272beba04d2 Mon Sep 17 00:00:00 2001 From: zack-rma Date: Wed, 4 Dec 2024 09:13:38 -0800 Subject: [PATCH 5/6] Uncommented delete method --- .../java/decodes/sql/UnitConverterIO.java | 59 ++++--------------- 1 file changed, 12 insertions(+), 47 deletions(-) diff --git a/java/opendcs/src/main/java/decodes/sql/UnitConverterIO.java b/java/opendcs/src/main/java/decodes/sql/UnitConverterIO.java index 52cf146d91..00988e9a83 100644 --- a/java/opendcs/src/main/java/decodes/sql/UnitConverterIO.java +++ b/java/opendcs/src/main/java/decodes/sql/UnitConverterIO.java @@ -27,9 +27,6 @@ import ilex.util.Logger; import decodes.db.DatabaseException; -import decodes.db.DatabaseIO; -import decodes.db.EngineeringUnit; -import decodes.db.EngineeringUnitList; import decodes.db.UnitConverterDb; import decodes.db.UnitConverterSet; @@ -129,38 +126,6 @@ public ArrayList readUCsIn(String inClause) } -// /** -// * Reads a particular unit converter from the database, by ID. -// * @param id the UC ID -// * @return UnitConverterDb or null if no match -// */ -// public UnitConverterDb readUnitConverter(DbKey id) -// throws DatabaseException -// { -// Statement stmt = null; -// try -// { -// stmt = createStatement(); -// -// String q = "SELECT " + columns + " FROM UnitConverter WHERE id = " + id; -// -// debug3("Query:" + q); -// ResultSet rs = stmt.executeQuery(q); -// -// if (rs != null && rs.next()) -// return rs2Uc(rs); -// } -// catch (SQLException e) -// { -// throw new DatabaseException(e.toString()); -// } -// finally -// { -// if (stmt != null) -// try {stmt.close();} catch(Exception ex) {} -// } -// return null; -// } private UnitConverterDb rs2Uc(ResultSet rs) throws SQLException @@ -321,18 +286,18 @@ public void insert(UnitConverterDb ucdb) executeUpdate(q); } -// /** -// * This deletes a single UnitConverterDb from the database, and unsets -// * the object's ID. The argument must have had its SQL database ID -// * already set. -// * @param ucdb the object to delete -// */ -// public void delete(UnitConverterDb ucdb) -// throws DatabaseException, SQLException -// { -// String q = "DELETE FROM UnitConverter WHERE ID = " + ucdb.getId(); -// executeUpdate(q); -// } + /** + * This deletes a single UnitConverterDb from the database, and unsets + * the object's ID. The argument must have had its SQL database ID + * already set. + * @param ucdb the object to delete + */ + public void delete(UnitConverterDb ucdb) + throws DatabaseException, SQLException + { + String q = "DELETE FROM UnitConverter WHERE ID = " + ucdb.getId(); + executeUpdate(q); + } public void setContext(String context) { From f0edbb95200314151fcd08adcb1682589a5f1cb8 Mon Sep 17 00:00:00 2001 From: zack-rma Date: Thu, 16 Jan 2025 14:40:16 -0800 Subject: [PATCH 6/6] Updated method implementations, fixed retrieval bug --- java/opendcs/src/main/java/decodes/db/DatabaseIO.java | 7 +------ .../src/main/java/decodes/sql/ConfigListIO.java | 10 +++++++--- .../src/main/java/decodes/sql/SqlDatabaseIO.java | 10 ++-------- .../src/main/java/decodes/xml/XmlDatabaseIO.java | 3 ++- 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/java/opendcs/src/main/java/decodes/db/DatabaseIO.java b/java/opendcs/src/main/java/decodes/db/DatabaseIO.java index 2dbf9032db..f72202e414 100644 --- a/java/opendcs/src/main/java/decodes/db/DatabaseIO.java +++ b/java/opendcs/src/main/java/decodes/db/DatabaseIO.java @@ -3,11 +3,8 @@ */ package decodes.db; -import java.sql.SQLException; import java.util.*; -import javax.xml.parsers.ParserConfigurationException; - import opendcs.dai.LoadingAppDAI; import opendcs.dai.PlatformStatusDAI; import opendcs.dai.ScheduleEntryDAI; @@ -15,10 +12,8 @@ import org.opendcs.authentication.AuthSourceService; import org.opendcs.database.SimpleDataSource; import org.opendcs.spi.authentication.AuthSource; -import org.xml.sax.SAXException; import ilex.util.AuthException; -import ilex.util.Counter; import decodes.sql.DbKey; import decodes.sql.DecodesDatabaseVersion; import decodes.sql.SqlDatabaseIO; @@ -357,7 +352,7 @@ public abstract Date getPlatformLMT(Platform p) *

@param pc the PlatformConfig to read */ - public abstract void readConfig( PlatformConfig pc ) + public abstract PlatformConfig readConfig( PlatformConfig pc ) throws DatabaseException; /** diff --git a/java/opendcs/src/main/java/decodes/sql/ConfigListIO.java b/java/opendcs/src/main/java/decodes/sql/ConfigListIO.java index 479c294e58..3ad43483ed 100644 --- a/java/opendcs/src/main/java/decodes/sql/ConfigListIO.java +++ b/java/opendcs/src/main/java/decodes/sql/ConfigListIO.java @@ -9,6 +9,7 @@ import java.util.Iterator; import java.util.Vector; +import decodes.db.ValueNotFoundException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -364,11 +365,14 @@ public PlatformConfig readConfig(DbKey id) ResultSet rs = stmt.executeQuery(q); if (rs == null || !rs.next()) - throw new DatabaseException( + { + Throwable thr = new ValueNotFoundException( "No PlatformConfig found with ID " + id); + throw new DatabaseException( + "No PlatformConfig found with ID " + id, thr); + } - PlatformConfig ret = putConfig(id, rs); - return ret; + return putConfig(id, rs); } finally { diff --git a/java/opendcs/src/main/java/decodes/sql/SqlDatabaseIO.java b/java/opendcs/src/main/java/decodes/sql/SqlDatabaseIO.java index 7174e00c74..48242c3f6e 100644 --- a/java/opendcs/src/main/java/decodes/sql/SqlDatabaseIO.java +++ b/java/opendcs/src/main/java/decodes/sql/SqlDatabaseIO.java @@ -69,7 +69,6 @@ import decodes.hdb.HdbSqlDatabaseIO; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; @@ -78,11 +77,8 @@ import java.util.Calendar; import java.util.Collections; import java.util.Date; -import java.util.Properties; import java.util.TimeZone; -import ilex.util.EnvExpander; -import org.opendcs.authentication.AuthSourceService; import org.slf4j.LoggerFactory; @@ -119,8 +115,6 @@ import opendcs.dao.SiteDAO; import opendcs.dao.TsGroupDAO; import opendcs.dao.XmitRecordDAO; -import opendcs.util.sql.WrappedConnection; -import ilex.util.AuthException; import ilex.util.Logger; import decodes.tsdb.BadTimeSeriesException; import decodes.tsdb.CTimeSeries; @@ -1215,13 +1209,13 @@ sensors, decodes scripts (and subordinate script data), and equipment */ // MJM NOT Synchronized because it can be called from the SQL Platform Helper @Override - public void readConfig(PlatformConfig pc) + public PlatformConfig readConfig(PlatformConfig pc) throws DatabaseException { try (Connection conn = getConnection()) { _configListIO.setConnection(conn); - _configListIO.readConfig(pc.getId()); + return _configListIO.readConfig(pc.getId()); } catch (SQLException ex) { diff --git a/java/opendcs/src/main/java/decodes/xml/XmlDatabaseIO.java b/java/opendcs/src/main/java/decodes/xml/XmlDatabaseIO.java index 1fe95ba13f..ebad8f8980 100644 --- a/java/opendcs/src/main/java/decodes/xml/XmlDatabaseIO.java +++ b/java/opendcs/src/main/java/decodes/xml/XmlDatabaseIO.java @@ -1426,13 +1426,14 @@ public void deletePlatform( Platform p ) throws DatabaseException * @param pc object in which to store data * @throws DatabaseException */ - public void readConfig( PlatformConfig pc ) throws DatabaseException + public PlatformConfig readConfig( PlatformConfig pc ) throws DatabaseException { String fn = ""; try { fn = makePath(PlatformConfigDir, pc.makeFileName()); myParser.parse(new File(fn), pc); + return pc; } catch(Exception e) {