We plan to integrate with Artemis JDBC store in our application server.
After a code review, we saw 2 main improvements that would make the code more flexible and easier to maintain.
First, in our app server, we have our sophisticated way to configure access to databases. We would like to be able to pass a DataSource instance to Artemis JDBC store instead of a (driver class name / URL) tuple.
If the DataSource object is set, we create a Connection from it, otherwise we use the current code to create the connection from a class name + URL. This will introduce no changes to use of standalone Artemis broker.
The second improvement is to make the SQLProvider injectable instead of relying on hard-coded class provided by Artemis jars.
We would create an instance of the SQLProvider in our integration code and pass it to Artemis JDBC store. This will make it simpler to support new types of databases (or fix issues in the SQLProvider implementations) without requiring a new release of Artemis for that.
If the SQLProvider instance injected in the JDBC store is null, the current code will be executed.
Does these improvements sound correct?