apply plugin: 'java'
// --- Validate JAVA_HOME ---
def javaHome = System.getenv('JAVA_HOME')
if (!javaHome) {
throw new GradleException("JAVA_HOME environment variable not set.")
}
def toolsJarFile = file("$javaHome/lib/tools.jar")
if (!toolsJarFile.exists()) {
throw new GradleException("JAVA_HOME does not point to a JDK, couldn't find tools.jar: $toolsJarFile")
logger.warn("JAVA_HOME is not pointing to JDK, couldn't find tools.jar $toolsJarFile.absolutePath")
}
// --- CPLS instances definition ---
def cpls_instances_apac = [
global_refdata: [
asset: 'cash', region: 'APAC', country: 'HNK', env: 'dev',
instance: 'global_refdata_cpls', appName: 'GLOBAL.HNK.GLOBAL.REFDATA.CPLS',
temp: 'global_refdata_cpls', debugPort: 8890
],
cash_cpls_mys_sales: [
asset: 'cash', region: 'APAC', country: 'MYS', env: 'dev',
instance: 'cash_cpls_mys_sales', appName: 'GLOBAL.MYS.COMET.CPLS.CASH_CPLS.SALES',
temp: 'cash_cpls_mys_sales', debugPort: 8890
],
cash_cpls_jpn_trdr1: [
asset: 'cash', region: 'APAC', country: 'JPN', env: 'dev',
instance: 'cash_cpls_jpn_trdr1', appName: 'GLOBAL.JPN.COMET.CPLS.CASH_CPLS.TRDR',
temp: 'cash_cpls_jpn_trdr1', debugPort: 8890
],
deriv_cpls_jpn_prop1: [
asset: 'derivatives', region: 'APAC', country: 'JPN', env: 'dev',
instance: 'deriv_cpls_jpn_prop1', appName: 'GLOBAL.JPN.COMET.CPLS.DERIV_PROP_CPLS1',
temp: 'deriv_cpls_jpn_prop1', debugPort: 8890
],
cash_cpls_sls1: [
app: 'CPLS', asset: 'cash', region: 'US', env: 'dev',
instance: 'cash_cpls_sls1', appName: 'GLOBAL.NA.US.COMET.CPLS.CPLS_CASH.CASH_CPLS_INSTANCE1',
temp: 'cash_cpls_sls1', debugPort: 9797
],
emea_local_dev_cpls: [
app: 'CPLS', asset: 'multi', region: 'EMEA', env: 'dev',
instance: 'emea_cpls_sls102', appName: 'GLOBAL.COMET.EMEA.CASHSLS.CPLS',
temp: 'emea_cpls_sls102', topic_instance: 'local_dev_100',
instance_id: 201110100, isDevLocal: true, debugPort: 8741
],
cash_position_1_qa: [
app: 'CPLS', asset: 'cash', region: 'US', env: 'qa',
instance: 'cash_position_1', appName: 'GLOBAL.US.COMET.POSITION.POSITIONINSTANCE1',
temp: 'cash_position_1', isDevLocal: false, debugPort: 9798
],
cash_position_1_dev: [
app: 'CPLS', asset: 'cash', region: 'US', env: 'dev',
instance: 'cash_position_1', appName: 'GLOBAL.US.COMET.POSITION.POSITIONINSTANCE1',
temp: 'cash_position_1', isDevLocal: true, debugPort: 9799
]
]
// --- Prepare library directory ---
task prepareLibDir(type: Copy) {
from configurations.sharedlib
into 'lib'
rename('libZeusCcDt.*.so', 'libZeusCcDt.so')
rename('libCcDt.*.so', 'libCcDt.so')
}
// --- Apply library path to all JavaExec tasks ---
tasks.withType(JavaExec) {
systemProperty "java.library.path", file("lib").absolutePath
environment "LD_LIBRARY_PATH", file("lib").absolutePath
}
// --- Dynamic CPLS JavaExec tasks ---
cpls_instances_apac.each { task_name, instance_options ->
if (!tasks.findByName(task_name)) {
task(task_name, type: JavaExec, dependsOn: [prepareLibDir, classes]) {
// --- Task-local variables ---
def asset = instance_options.asset
def region = instance_options.region
def country = instance_options.country ?: ''
def env = instance_options.env
def instanceName = instance_options.instance
def tempDir = instance_options.temp
def appName = instance_options.appName
def isDevLocal = instance_options.isDevLocal?.toString()?.toBoolean() ?: false
def app = instance_options.app ?: 'CPLS_ASIA'
def debugPort = instance_options.debugPort
def topic_instance = instance_options.topic_instance ?: '102'
def instance_id = instance_options.instance_id ?: null
logger.info "task:$task_name started execution"
// --- File paths ---
def cfgFileName = 'CFG.' + appName + '.xml'
def devConfigServiceFile = "devConfigService.xml"
def cplsConfigFile = file("src/main/config/quantum/$asset/$region/$country/$env/cplsConfig.xml")
def cplsFile = file("src/main/config/dds/$asset/$region/$country/$env/$instanceName/$cfgFileName")
def cplsDir = file("src/main/config/quantum/$asset/$region/$country/$env/$instanceName")
def loggingConfig = file("src/main/config/quantum/$asset/$region/$country/$env/logging.properties.txt")
def cpacs = files(
"src/main/config/quantum/$asset/$region/$country/$env/cpacs/cpacs.xml",
"src/main/config/quantum/$asset/$region/$country/$env/cpacs.xml"
)
def cpacsFile = cpacs.find { it.exists() }
def aleConfig = file("src/main/config/quantum/$asset/$region/$country/$env/alefcg")
def securityFile = file("src/main/config/resources/security.dat")
// --- Tmp dir setup ---
def setTmpDir = {
if (System.properties['os.name'].toLowerCase().contains('linux')) {
System.properties['java.io.tmpdir'] = '/opt/lgohome'
logger.info "Setting [java.io.tmpdir] to [${System.properties['java.io.tmpdir']}]"
} else if (System.properties['os.name'].toLowerCase().contains('windows')) {
System.properties['java.io.tmpdir'] = 'C:/temp'
logger.info "Setting [java.io.tmpdir] to [${System.properties['java.io.tmpdir']}]"
}
}
def buildFileSystem = { param ->
['dds', 'log', 'store'].each { dir ->
new File("${System.properties['java.io.tmpdir']}/$param/$dir").mkdirs()
println "Created directory: ${System.properties['java.io.tmpdir']}/$param/$dir"
}
}
def prepareJvmArgs = {
def argsList = [
"-Xms256M",
"-Xmx512M",
"-Xss256k",
"-Djava.library.path=${file('lib').absolutePath}",
"-Dinstance=$instanceName",
"-Dapplication=$appName",
"-Ddds.tmpdir=${System.properties['java.io.tmpdir']}/$tempDir/dds/",
"-Dcpls.path.store.dir=${System.properties['java.io.tmpdir']}/$tempDir/store/",
"-Djava.io.tmpdir=${System.properties['java.io.tmpdir']}/$tempDir/log/"
]
if (isDevLocal) {
argsList += "-Ddev_local=true"
logger.info "Adding -Ddev_local=true"
}
return argsList
}
def setupDevConfig = {
copy {
def fromFile = "src/main/config/quantum/$asset/$region/$env/$instanceName/configService.xml"
def toFile = "${System.properties['java.io.tmpdir']}/$tempDir/dds/"
from fromFile
into toFile
filter { line ->
line.replaceAll('<file-cache location="[/-a-zA-Z0-9_]*\\/>',
"<file-cache location=\"$toFile\"/>")
}
rename('configService.xml', 'devConfigService.xml')
println "Copied and filtered configService.xml to devConfigService.xml"
}
}
// --- Classpath ---
def instanceClasspath = files(
"src/main/config/quantum/$asset/$region/$country/$env",
"src/main/config/quantum/$asset/$region/$country/",
"src/main/config/quantum/$asset/$region/$country/$env/$instanceName",
"src/main/config/dds/$asset/$region/$country/$env/$instanceName",
"src/main/config",
toolsJarFile
)
def quantumJarFile = sourceSets.main.runtimeClasspath.findAll {
it.toPath().fileName.toString().endsWith('.jar') &&
it.toPath().fileName.toString().contains("quantum")
}
classpath = files(instanceClasspath) + files(quantumJarFile) + files(sourceSets.main.runtimeClasspath + files("${System.properties['java.io.tmpdir']}/$tempDir/dds") - files(quantumJarFile))
// --- doFirst ---
doFirst {
setTmpDir()
buildFileSystem(tempDir)
jvmArgs += prepareJvmArgs()
if (isDevLocal) {
setupDevConfig()
}
// Print classpath exactly as original
classpath.each { println "classpath: $it" }
// Print JVM args exactly as original
jvmArgs.each { println "arg -> $it" }
}
// --- Main class ---
main = 'com.citi.DebugLauncher'
// --- Application args ---
args 'file://' + file("src/main/config/quantum/$asset/$region/$country/$env"),
instanceName,
'dummy'
workingDir = file('src/main/config')
standardInput = System.in
logger.info "task:$task_name completes execution"
}
}
}
For further actions, you may consider blocking this person and/or reporting abuse
Top comments (0)