Franck Cussac
Franck Cussac

Reputation: 319

Groovy convert String to Long

I'm coding a jenkins pipeline and I need to convert a String parameter in a Long value.

I have used Long.valueOf, Long.parseLong. I get this error message :

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: java.lang.Class.parseLong() is applicable for argument types: (java.lang.String) values: [8899986991733205013]

or this :

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: java.lang.Class.valueOf() is applicable for argument types: (java.lang.String) values: [8899986991733205013]

my code :

    def min = Long.valueOf(params.paymentid) + Integer.valueOf(params.begin)
    def max = Long.valueOf(params.paymentid) + Integer.valueOf(params.end)

Any idea ? Thanks.

Upvotes: 7

Views: 37632

Answers (3)

Nitin Dhomse
Nitin Dhomse

Reputation: 2622

The following conversion will also work.

Long paymentId = params.paymentid as Long
println paymentId

You can put this block inside try..catch block to handle any type casting exception if the string is invalid.

Upvotes: 9

Franck Cussac
Franck Cussac

Reputation: 319

I tried this solution in admin console :

print(params.paymendid.toLong())

it worked. On my pipeline it didn't work, i got this error :

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods toLong java.lang.String

but this solution : https://stackoverflow.com/a/39412951/8357778 works.

I should disable sandbox.

Upvotes: 5

vmartin
vmartin

Reputation: 501

you should use the Long class:

def min = Long.valueOf('1')

Upvotes: 15

Related Questions