mirror of
https://github.com/corda/corda.git
synced 2025-02-05 02:29:20 +00:00
CORDA-1309 Add support for jarDirs config (#705)
This commit is contained in:
parent
6761824ba7
commit
4ed917436a
@ -14,7 +14,6 @@ import com.zaxxer.hikari.HikariConfig
|
||||
import com.zaxxer.hikari.HikariDataSource
|
||||
import com.zaxxer.hikari.util.PropertyElf
|
||||
import net.corda.core.internal.declaredField
|
||||
import net.corda.core.internal.div
|
||||
import org.h2.engine.Database
|
||||
import org.h2.engine.Engine
|
||||
import org.slf4j.LoggerFactory
|
||||
@ -58,8 +57,8 @@ object DataSourceFactory {
|
||||
}
|
||||
}
|
||||
|
||||
fun createDatasourceFromDriverJars(dataSourceProperties: Properties, baseClassLoader: ClassLoader, driverJarsPath: Path): DataSource {
|
||||
return URLClassLoader(Files.newDirectoryStream(driverJarsPath, "*.jar").map { it.toUri().toURL() }.toTypedArray(), baseClassLoader).use { driversClassLoader ->
|
||||
fun createDatasourceFromDriverJarFolders(dataSourceProperties: Properties, baseClassLoader: ClassLoader, driverJarsPath: List<Path>): DataSource {
|
||||
return URLClassLoader(driverJarsPath.flatMap { Files.newDirectoryStream(it, "*.jar") }.map { it.toUri().toURL() }.toTypedArray(), baseClassLoader).use { driversClassLoader ->
|
||||
val dataSourceClassName = dataSourceProperties["dataSourceClassName"] as String?
|
||||
val dataSourceClass = driversClassLoader.loadClass(dataSourceClassName)
|
||||
val dataSourceInstance = dataSourceClass.newInstance() as DataSource
|
||||
@ -75,8 +74,8 @@ object DataSourceFactory {
|
||||
}
|
||||
}
|
||||
|
||||
fun createHikariDatasourceFromDriverJars(dataSourceProperties: Properties, baseClassLoader: ClassLoader, driverJarsPath: Path): DataSource {
|
||||
val dataSource = createDatasourceFromDriverJars(dataSourceProperties, baseClassLoader, driverJarsPath)
|
||||
fun createHikariDatasourceFromDriverJarFolders(dataSourceProperties: Properties, baseClassLoader: ClassLoader, driverJarsPath: List<Path>): DataSource {
|
||||
val dataSource = createDatasourceFromDriverJarFolders(dataSourceProperties, baseClassLoader, driverJarsPath)
|
||||
val cfg = HikariConfig(dataSourceProperties)
|
||||
cfg.dataSource = dataSource
|
||||
return HikariDataSource(cfg)
|
||||
|
@ -22,7 +22,7 @@ import net.corda.core.internal.MigrationHelpers
|
||||
import net.corda.core.internal.copyTo
|
||||
import net.corda.core.internal.div
|
||||
import net.corda.core.schemas.MappedSchema
|
||||
import net.corda.node.internal.DataSourceFactory.createDatasourceFromDriverJars
|
||||
import net.corda.node.internal.DataSourceFactory.createDatasourceFromDriverJarFolders
|
||||
import net.corda.node.internal.cordapp.CordappLoader
|
||||
import net.corda.node.services.config.ConfigHelper
|
||||
import net.corda.node.services.config.configOf
|
||||
@ -108,7 +108,7 @@ fun main(args: Array<String>) {
|
||||
}
|
||||
}
|
||||
|
||||
data class Configuration(val dataSourceProperties: Properties, val database: DatabaseConfig)
|
||||
data class Configuration(val dataSourceProperties: Properties, val database: DatabaseConfig, val jarDirs: List<String> = emptyList())
|
||||
|
||||
private fun runCommand(options: OptionSet, parser: OptionParser) {
|
||||
|
||||
@ -222,8 +222,8 @@ private fun getMigrationOutput(baseDirectory: Path, options: OptionSet): Writer
|
||||
}
|
||||
|
||||
private fun runWithDataSource(config: Configuration, baseDirectory: Path, classLoader: ClassLoader, withDatasource: (DataSource) -> Unit) {
|
||||
val driversFolder = baseDirectory / "drivers"
|
||||
return withDatasource(createDatasourceFromDriverJars(config.dataSourceProperties, classLoader, driversFolder))
|
||||
val driversFolder = (baseDirectory / "drivers")
|
||||
return withDatasource(createDatasourceFromDriverJarFolders(config.dataSourceProperties, classLoader, listOf(driversFolder) + config.jarDirs.map { Paths.get(it) }))
|
||||
}
|
||||
|
||||
private fun errorAndExit(message: String?) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user