diff --git a/docker/multistage/TEST_config_live.xml b/docker/multistage/TEST_config_live.xml
index fa38eec..d1b7345 100644
--- a/docker/multistage/TEST_config_live.xml
+++ b/docker/multistage/TEST_config_live.xml
@@ -4,6 +4,11 @@
10000
1000
500
+
+ org.postgresql.Driver
+ org.relique.jdbc.csv.CsvDriver
+
+
jdbc:postgresql://testdb:5432/test
test
diff --git a/docker/multistage/small.csv b/docker/multistage/small.csv
new file mode 100644
index 0000000..37ddeff
--- /dev/null
+++ b/docker/multistage/small.csv
@@ -0,0 +1,4 @@
+id,dat
+1,banana
+2,potato
+3,nugget
diff --git a/docker/test_db/setup.sql b/docker/test_db/setup.sql
index ff4a1b7..2469967 100644
--- a/docker/test_db/setup.sql
+++ b/docker/test_db/setup.sql
@@ -44,10 +44,14 @@ CREATE TABLE denormalised_personalia(
lname text
);
+CREATE TABLE test_csvjdbc(
+ id integer not null primary key,
+ dat text
+);
+
GRANT SELECT ON ALL TABLES IN SCHEMA public TO test;
GRANT SELECT,INSERT,UPDATE ON denormalised_personalia TO test;
-
\c postgres
CREATE TABLE public.container_ready AS SELECT 1 FROM(VALUES(1)) AS a(a);
GRANT SELECT ON public.container_ready TO TEST;
diff --git a/pom.xml b/pom.xml
index 043daad..3b55a96 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,6 +78,11 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/ma
postgresql
42.4.3
+
+ net.sourceforge.csvjdbc
+ csvjdbc
+ 1.0.40
+
diff --git a/src/main/java/com/rasilon/ujetl/CopyingApp.java b/src/main/java/com/rasilon/ujetl/CopyingApp.java
index 1100d93..60dd65d 100644
--- a/src/main/java/com/rasilon/ujetl/CopyingApp.java
+++ b/src/main/java/com/rasilon/ujetl/CopyingApp.java
@@ -75,6 +75,7 @@ public class CopyingApp {
Configuration config = configs.xml(cli.getConfigFile());
+ loadDrivers(config);
String hardLimitSeconds = config.getString("hardLimitSeconds");
if(hardLimitSeconds != null) {
TimeLimiter hardLimit = new TimeLimiter(Integer.decode(hardLimitSeconds).intValue(),true);
@@ -240,4 +241,11 @@ public class CopyingApp {
return c;
}
+
+ private void loadDrivers(Configuration config){
+ String[] drivers = config.get(String[].class, "drivers.driver");
+ for(String d:drivers){
+ log.info("Would load "+d);
+ }
+ }
}
diff --git a/src/test/java/com/rasilon/ujetl/TestConfig.java b/src/test/java/com/rasilon/ujetl/TestConfig.java
new file mode 100644
index 0000000..bbf855b
--- /dev/null
+++ b/src/test/java/com/rasilon/ujetl/TestConfig.java
@@ -0,0 +1,37 @@
+package com.rasilon.ujetl;
+
+import org.apache.commons.configuration2.Configuration;
+import org.apache.commons.configuration2.builder.fluent.Configurations;
+import org.apache.commons.configuration2.ex.ConfigurationException;
+
+import org.apache.commons.beanutils.PropertyUtils; // Why does config need this?
+
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.MethodOrderer.Alphanumeric;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
+
+
+/**
+ * @author derryh
+ *
+ */
+public class TestConfig {
+
+ @Test
+ public void test002verifyH2Works() {
+ try {
+ Configurations configs = new Configurations();
+ Configuration config = configs.xml("TEST_config_live.xml");
+ String[] drivers = config.get(String[].class, "drivers.driver");
+ int ndrivers =drivers.length;
+ if(ndrivers != 3){
+ fail("Expected 3 drivers, but found "+ndrivers);
+ }
+ } catch(Exception e) {
+ fail(e.toString());
+ }
+ }
+
+}
diff --git a/src/test/resources/TEST_config_live.xml b/src/test/resources/TEST_config_live.xml
index 338faff..210d8f1 100644
--- a/src/test/resources/TEST_config_live.xml
+++ b/src/test/resources/TEST_config_live.xml
@@ -4,6 +4,11 @@
10000
1000
500
+
+ org.postgresql.Driver
+ org.h2.Driver
+ org.relique.jdbc.csv.CsvDriver
+
jdbc:postgresql://localhost:5432/test
test