mirror of
https://github.com/corda/corda.git
synced 2025-02-05 10:39:13 +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.HikariDataSource
|
||||||
import com.zaxxer.hikari.util.PropertyElf
|
import com.zaxxer.hikari.util.PropertyElf
|
||||||
import net.corda.core.internal.declaredField
|
import net.corda.core.internal.declaredField
|
||||||
import net.corda.core.internal.div
|
|
||||||
import org.h2.engine.Database
|
import org.h2.engine.Database
|
||||||
import org.h2.engine.Engine
|
import org.h2.engine.Engine
|
||||||
import org.slf4j.LoggerFactory
|
import org.slf4j.LoggerFactory
|
||||||
@ -58,8 +57,8 @@ object DataSourceFactory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createDatasourceFromDriverJars(dataSourceProperties: Properties, baseClassLoader: ClassLoader, driverJarsPath: Path): DataSource {
|
fun createDatasourceFromDriverJarFolders(dataSourceProperties: Properties, baseClassLoader: ClassLoader, driverJarsPath: List<Path>): DataSource {
|
||||||
return URLClassLoader(Files.newDirectoryStream(driverJarsPath, "*.jar").map { it.toUri().toURL() }.toTypedArray(), baseClassLoader).use { driversClassLoader ->
|
return URLClassLoader(driverJarsPath.flatMap { Files.newDirectoryStream(it, "*.jar") }.map { it.toUri().toURL() }.toTypedArray(), baseClassLoader).use { driversClassLoader ->
|
||||||
val dataSourceClassName = dataSourceProperties["dataSourceClassName"] as String?
|
val dataSourceClassName = dataSourceProperties["dataSourceClassName"] as String?
|
||||||
val dataSourceClass = driversClassLoader.loadClass(dataSourceClassName)
|
val dataSourceClass = driversClassLoader.loadClass(dataSourceClassName)
|
||||||
val dataSourceInstance = dataSourceClass.newInstance() as DataSource
|
val dataSourceInstance = dataSourceClass.newInstance() as DataSource
|
||||||
@ -75,8 +74,8 @@ object DataSourceFactory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun createHikariDatasourceFromDriverJars(dataSourceProperties: Properties, baseClassLoader: ClassLoader, driverJarsPath: Path): DataSource {
|
fun createHikariDatasourceFromDriverJarFolders(dataSourceProperties: Properties, baseClassLoader: ClassLoader, driverJarsPath: List<Path>): DataSource {
|
||||||
val dataSource = createDatasourceFromDriverJars(dataSourceProperties, baseClassLoader, driverJarsPath)
|
val dataSource = createDatasourceFromDriverJarFolders(dataSourceProperties, baseClassLoader, driverJarsPath)
|
||||||
val cfg = HikariConfig(dataSourceProperties)
|
val cfg = HikariConfig(dataSourceProperties)
|
||||||
cfg.dataSource = dataSource
|
cfg.dataSource = dataSource
|
||||||
return HikariDataSource(cfg)
|
return HikariDataSource(cfg)
|
||||||
|
@ -22,7 +22,7 @@ import net.corda.core.internal.MigrationHelpers
|
|||||||
import net.corda.core.internal.copyTo
|
import net.corda.core.internal.copyTo
|
||||||
import net.corda.core.internal.div
|
import net.corda.core.internal.div
|
||||||
import net.corda.core.schemas.MappedSchema
|
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.internal.cordapp.CordappLoader
|
||||||
import net.corda.node.services.config.ConfigHelper
|
import net.corda.node.services.config.ConfigHelper
|
||||||
import net.corda.node.services.config.configOf
|
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) {
|
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) {
|
private fun runWithDataSource(config: Configuration, baseDirectory: Path, classLoader: ClassLoader, withDatasource: (DataSource) -> Unit) {
|
||||||
val driversFolder = baseDirectory / "drivers"
|
val driversFolder = (baseDirectory / "drivers")
|
||||||
return withDatasource(createDatasourceFromDriverJars(config.dataSourceProperties, classLoader, driversFolder))
|
return withDatasource(createDatasourceFromDriverJarFolders(config.dataSourceProperties, classLoader, listOf(driversFolder) + config.jarDirs.map { Paths.get(it) }))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun errorAndExit(message: String?) {
|
private fun errorAndExit(message: String?) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user