Skip to content

Commit 6bb03e6

Browse files
authored
Merge pull request #210 from istudens/CLOUD-3674
[CLOUD-3674] added driver_class, datasource_class and xa_datasource_c…
2 parents f8b7541 + a3cb3b4 commit 6bb03e6

File tree

6 files changed

+182
-2
lines changed

6 files changed

+182
-2
lines changed

jboss/container/wildfly/launch/datasources/added/launch/datasource-common.sh

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ function clearDatasourceEnv() {
4848
unset ${prefix}_URL
4949
unset ${prefix}_BACKGROUND_VALIDATION
5050
unset ${prefix}_BACKGROUND_VALIDATION_MILLIS
51+
unset ${prefix}_DRIVER_CLASS
52+
unset ${prefix}_DATASOURCE_CLASS
53+
unset ${prefix}_XA_DATASOURCE_CLASS
5154

5255
for xa_prop in $(compgen -v | grep -s "${prefix}_XA_CONNECTION_PROPERTY_"); do
5356
unset ${xa_prop}
@@ -379,6 +382,15 @@ function generate_external_datasource_xml() {
379382
ds="<datasource jta=\"${jta}\" jndi-name=\"${jndi_name}\" pool-name=\"${pool_name}\" enabled=\"true\" use-java-context=\"true\" statistics-enabled=\"\${wildfly.datasources.statistics-enabled:\${wildfly.statistics-enabled:false}}\">
380383
<connection-url>${url}</connection-url>
381384
<driver>$driver</driver>"
385+
386+
if [ -n "$driver_class" ]; then
387+
ds="$ds
388+
<driver-class>$driver_class</driver-class>"
389+
fi
390+
if [ -n "$datasource_class" ]; then
391+
ds="$ds
392+
<datasource-class>$datasource_class</datasource-class>"
393+
fi
382394
else
383395
ds=" <xa-datasource jndi-name=\"${jndi_name}\" pool-name=\"${pool_name}\" enabled=\"true\" use-java-context=\"true\" statistics-enabled=\"\${wildfly.datasources.statistics-enabled:\${wildfly.statistics-enabled:false}}\">"
384396
local xa_props=$(compgen -v | grep -s "${prefix}_XA_CONNECTION_PROPERTY_")
@@ -398,6 +410,11 @@ function generate_external_datasource_xml() {
398410
ds="$ds
399411
<driver>${driver}</driver>"
400412
fi
413+
414+
if [ -n "$xa_datasource_class" ]; then
415+
ds="$ds
416+
<xa-datasource-class>$xa_datasource_class</xa-datasource-class>"
417+
fi
401418
fi
402419

403420
if [ -n "$tx_isolation" ]; then
@@ -496,6 +513,12 @@ function generate_external_datasource_cli() {
496513
ds_tmp_key_values["jta"]="${jta}"
497514
ds_tmp_key_values['connection-url']="${url}"
498515

516+
if [ -n "${driver_class}" ]; then
517+
ds_tmp_key_values["driver-class"]="${driver_class}"
518+
fi
519+
if [ -n "${datasource_class}" ]; then
520+
ds_tmp_key_values["datasource-class"]="${datasource_class}"
521+
fi
499522
else
500523
ds_resource="${subsystem_addr}/xa-data-source=${pool_name}"
501524
other_ds_resource="${subsystem_addr}/data-source=${pool_name}"
@@ -514,6 +537,10 @@ function generate_external_datasource_cli() {
514537
fi
515538
done
516539
fi
540+
541+
if [ -n "${xa_datasource_class}" ]; then
542+
ds_tmp_key_values["xa-datasource-class"]="${xa_datasource_class}"
543+
fi
517544
fi
518545

519546
if [ -n "${tx_isolation}" ]; then
@@ -851,6 +878,9 @@ function inject_datasource() {
851878
local sorter
852879
local url
853880
local service_name
881+
local driver_class
882+
local datasource_class
883+
local xa_datasource_class
854884

855885
host=$(find_env "${service}_SERVICE_HOST")
856886

@@ -897,6 +927,15 @@ function inject_datasource() {
897927
# $NON_XA_DATASOURCE: [NAME]_[DATABASE_TYPE]_NONXA (DB_NONXA)
898928
NON_XA_DATASOURCE=$(find_env "${prefix}_NONXA" false)
899929

930+
# driver class environment variable name format: [NAME]_[DATABASE_TYPE]_DRIVER_CLASS
931+
driver_class=$(find_env "${prefix}_DRIVER_CLASS")
932+
933+
# datasource class environment variable name format: [NAME]_[DATABASE_TYPE]_DATASOURCE_CLASS
934+
datasource_class=$(find_env "${prefix}_DATASOURCE_CLASS")
935+
936+
# xa datasource class environment variable name format: [NAME]_[DATABASE_TYPE]_XA_DATASOURCE_CLASS
937+
xa_datasource_class=$(find_env "${prefix}_XA_DATASOURCE_CLASS")
938+
900939
url=$(find_env "${prefix}_URL")
901940
driver=$(find_env "${prefix}_DRIVER" )
902941
if [ -z "${driver}" ] && [ -n "${db}" ]; then
@@ -1054,4 +1093,4 @@ function inject_job_repository() {
10541093
echo "${cli}" >> "${DEFAULT_JOB_REPOSITORY_FILE}"
10551094
fi
10561095

1057-
}
1096+
}

jboss/container/wildfly/launch/datasources/module.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,12 @@ envs:
6666
- name: "{PREFIX}_USERNAME"
6767
description: "Defines the username for the datasource. Required."
6868
example: "admin"
69+
- name: "{PREFIX}_DRIVER_CLASS"
70+
description: "Defines the fully qualifed name of the JDBC driver class."
71+
example: "org.hsqldb.jdbcDriver"
72+
- name: "{PREFIX}_DATASOURCE_CLASS"
73+
description: "Defines the fully qualifed name of the JDBC datasource class."
74+
example: "org.h2.jdbcx.JdbcDataSource"
75+
- name: "{PREFIX}_XA_DATASOURCE_CLASS"
76+
description: "Defines the fully qualifed name of the javax.sql.XADataSource implementation."
77+
example: "oracle.jdbc.xa.client.OracleXADataSource"

jboss/container/wildfly/launch/datasources/test/datasource/configure.bats

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,61 @@ load common
308308
assert_datasources "prefix_ibmdb2_xa.xml"
309309
}
310310

311+
@test "inject_datasources: DB_SERVICE_PREFIX_MAPPING - DRIVER_CLASS" {
312+
DB_SERVICE_PREFIX_MAPPING="test-postgresql=TEST"
313+
TEST_JNDI="java:/jboss/datasources/testds"
314+
TEST_DRIVER="postgresql"
315+
TEST_USERNAME="kermit"
316+
TEST_PASSWORD="thefrog"
317+
TEST_URL="jdbc:postgresql://localhost:5432/postgresdb"
318+
TEST_NONXA="true"
319+
TEST_JTA="false"
320+
321+
TEST_DRIVER_CLASS="org.postgresql.Driver"
322+
323+
run inject_datasources
324+
325+
[ "$status" -eq 0 ]
326+
assert_datasources "prefix_postgresql_nonxa_driver_class.xml"
327+
}
328+
329+
330+
@test "inject_datasources: DB_SERVICE_PREFIX_MAPPING - DATASOURCE_CLASS" {
331+
DB_SERVICE_PREFIX_MAPPING="test-postgresql=TEST"
332+
TEST_JNDI="java:/jboss/datasources/testds"
333+
TEST_DRIVER="postgresql"
334+
TEST_USERNAME="kermit"
335+
TEST_PASSWORD="thefrog"
336+
TEST_URL="jdbc:postgresql://localhost:5432/postgresdb"
337+
TEST_NONXA="true"
338+
TEST_JTA="false"
339+
340+
TEST_DATASOURCE_CLASS="org.postgres.jdbc3.Jdbc3SimpleDataSource"
341+
342+
run inject_datasources
343+
344+
[ "$status" -eq 0 ]
345+
assert_datasources "prefix_postgresql_nonxa_datasource_class.xml"
346+
}
347+
348+
@test "inject_datasources: DB_SERVICE_PREFIX_MAPPING - XA_DATASOURCE_CLASS" {
349+
DB_SERVICE_PREFIX_MAPPING="test-postgresql=TEST"
350+
TEST_JNDI="java:/jboss/datasources/testds"
351+
TEST_USERNAME="kermit"
352+
TEST_PASSWORD="thefrog"
353+
TEST_NONXA="false"
354+
TEST_XA_CONNECTION_PROPERTY_ServerName="localhost"
355+
TEST_XA_CONNECTION_PROPERTY_PortNumber="5432"
356+
TEST_XA_CONNECTION_PROPERTY_DatabaseName="postgresdb"
357+
358+
TEST_XA_DATASOURCE_CLASS="org.postgresql.xa.PGXADataSource"
359+
360+
run inject_datasources
361+
362+
[ "$status" -eq 0 ]
363+
assert_datasources "prefix_postgresql_xa_xa_datasource_class.xml"
364+
}
365+
311366
@test "inject_datasources: DATASOURCES - Missing required values" {
312367
DATASOURCES="TEST"
313368
TEST_JNDI="java:/jboss/datasources/testds"
@@ -363,4 +418,4 @@ load common
363418

364419
[ "$status" -eq 0 ]
365420
assert_defaut_bindings "default_bindings_placeholder.xml"
366-
}
421+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?xml version="1.0"?>
2+
<datasources>
3+
<datasource jta="false" jndi-name="java:/jboss/datasources/testds" pool-name="test_postgresql-TEST" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
4+
<connection-url>jdbc:postgresql://localhost:5432/postgresdb</connection-url>
5+
<driver>postgresql</driver>
6+
<datasource-class>org.postgres.jdbc3.Jdbc3SimpleDataSource</datasource-class>
7+
<security>
8+
<user-name>kermit</user-name>
9+
<password>thefrog</password>
10+
</security>
11+
<validation>
12+
<validate-on-match>true</validate-on-match>
13+
<background-validation>false</background-validation>
14+
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
15+
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
16+
</validation>
17+
</datasource>
18+
<!-- ##DATASOURCES## -->
19+
<drivers>
20+
<driver name="h2" module="com.h2database.h2">
21+
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
22+
</driver>
23+
<!-- ##DRIVERS## -->
24+
</drivers>
25+
</datasources>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?xml version="1.0"?>
2+
<datasources>
3+
<datasource jta="false" jndi-name="java:/jboss/datasources/testds" pool-name="test_postgresql-TEST" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
4+
<connection-url>jdbc:postgresql://localhost:5432/postgresdb</connection-url>
5+
<driver>postgresql</driver>
6+
<driver-class>org.postgresql.Driver</driver-class>
7+
<security>
8+
<user-name>kermit</user-name>
9+
<password>thefrog</password>
10+
</security>
11+
<validation>
12+
<validate-on-match>true</validate-on-match>
13+
<background-validation>false</background-validation>
14+
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
15+
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
16+
</validation>
17+
</datasource>
18+
<!-- ##DATASOURCES## -->
19+
<drivers>
20+
<driver name="h2" module="com.h2database.h2">
21+
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
22+
</driver>
23+
<!-- ##DRIVERS## -->
24+
</drivers>
25+
</datasources>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?xml version="1.0"?>
2+
<datasources>
3+
<xa-datasource jndi-name="java:/jboss/datasources/testds" pool-name="test_postgresql-TEST" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
4+
<xa-datasource-property name="DatabaseName">postgresdb</xa-datasource-property>
5+
<xa-datasource-property name="PortNumber">5432</xa-datasource-property>
6+
<xa-datasource-property name="ServerName">localhost</xa-datasource-property>
7+
<driver>postgresql</driver>
8+
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
9+
<security>
10+
<user-name>kermit</user-name>
11+
<password>thefrog</password>
12+
</security>
13+
<validation>
14+
<validate-on-match>true</validate-on-match>
15+
<background-validation>false</background-validation>
16+
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
17+
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
18+
</validation>
19+
</xa-datasource>
20+
<!-- ##DATASOURCES## -->
21+
<drivers>
22+
<driver name="h2" module="com.h2database.h2">
23+
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
24+
</driver>
25+
<!-- ##DRIVERS## -->
26+
</drivers>
27+
</datasources>

0 commit comments

Comments
 (0)