vector8188
vector8188

Reputation: 1393

shorthand way figuring out groovy parameter type based on the json

is there a shorthand way figuring out parameter type based on the json evaluated by readJSON groovy package. I am using resulting event_processor_parameters in a job such as

build job: "dvmt-event-processor-dev", wait: false, parameters: event_processor_parameters

I have this working but I would like to have more cleaner way.

props =  readJSON text: env.hb_job_params
for ( param in props.get(application_server)) {
    if (param.value.getClass() == Boolean){
        event_processor_parameters.add([$class: 'BooleanParameterValue', name: param.key, value: param.value])
    }
    else if (param.value.getClass() == String){
        event_processor_parameters.add([$class: 'StringParameterValue', name: param.key, value: param.value])
    }
    
}

env.hb_job_params ==>

{
    "server1": {
        "ENV": "DEV",
        "dev_xbar_host": "xbarserver1",
        "platform_type" : "o2",
        "dev_app_host" : "server1",
        "VERSION" : "1.0.0.23",
        force_build: false
    }
}

Upvotes: 0

Views: 85

Answers (1)

daggett
daggett

Reputation: 28644

as a variant:

for ( param in props.get(application_server)) {
    def clazz = "${param.value.getClass().getSimpleName()}ParameterValue"
    event_processor_parameters.add([$class: clazz, name: param.key, value: param.value])
}

Upvotes: 1

Related Questions