I have the following code that I'm executing from a Jenkins non-System Groovy Script using Groovy 2.4.3
private void readJsonFile() {
if (testsValid == false) {
def jsonSlurper = new JsonSlurper()
try {
println "FileReader("+jsonFileName+")"
def fr = new FileReader(jsonFileName)
println "About to slurp from FileReader "+fr
println "Class: " + fr.getClass()
tests = jsonSlurper.parse(fr)
} catch (FileNotFoundException e) {
println "Properties File Not Found: "+jsonFileName
e.printStackTrace()
} catch (IllegalArgumentException e) {
println "Illegal Argument: " + e.getCause()
e.printStackTrace()
}
}
}
But, when I run it I get the following exception:
FileReader(/var/lib/jenkins/workspace/2TierUtmsLog2/resources/utmsdata.json)
About to slurp from FileReader java.io.FileReader@125d92c
Class: class java.io.FileReader
Caught: java.lang.IllegalArgumentException: argument type mismatch
java.lang.IllegalArgumentException: argument type mismatch
at JenkinsJsonTestDao.readJsonFile(JenkinsJsonTestDao.groovy:82)
at JenkinsJsonTestDao.readJenkinsUtmsTest(JenkinsJsonTestDao.groovy:51)
at JenkinsTestDaoIf$readJenkinsUtmsTest.call(Unknown Source)
at JenkinsTestLogger.logTestResult(JenkinsTestLogger.groovy:32)
at JenkinsTestLoggerIf$logTestResult.call(Unknown Source)
at JenkinsLog.logTest(JenkinsLog.groovy:76)
at JenkinsLog$logTest.call(Unknown Source)
at JenkinsLog.main(JenkinsLog.groovy:44)
Build step 'Execute Groovy script' marked build as failure
The JsonSlurper.parse(Reader r) method does take a Reader, so I don't understand why this isn't working. I've also tried using the JsonSlurper.parse(String s) method, but get the same error. I've also printed out the contents that is read via the FileReader and it's correct.
Can anyone spot what I'm doing wrong, or is this another Jenkins restriction I'm running up against.
Added requested info:
jsonSlurper: groovy.json.JsonSlurper@19e733e
Print of new File(...)
{ "job": [
{
"jenkins_name": "ForceAResult-fail",
"utmsEnabled": "1",
"utmsCycleId": "1",
"utmsProejct": "Unity",
"utmsTeam": "CA-SS System Software",
"utmsTestName": "Force_a_test",
"utmsTestPlanId": "2",
"utmsTestSetId": "3",
},
{
"jenkins_name": "ForceAResult-pass",
"utmsEnabled": "1",
"utmsCycleId": "1",
"utmsProejct": "Unity",
"utmsTeam": "CA-SS System Software",
"utmsTestName": "Force_a_test",
"utmsTestPlanId": "2",
"utmsTestSetId": "3",
}
]}
Uncaught Exception: java.lang.IllegalArgumentException: argument type mismatch org.codehaus.groovy.runtime.InvokerInvocationException: java.lang.IllegalArgumentException: argument type mismatch at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:92) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:324) at groovy.lang.MetaClassImpl.setProperty(MetaClassImpl.java:2699)
Added info for Divesh
[EnvInject] - Loading node environment variables. Building on master in workspace /var/lib/jenkins/workspace/Groovy Version System Groovy Version: 1.8.9 PATH: /var/lib/ccache/bin:/c4shares/auto/tools/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/opt/accurev/bin:/opt/CmTools/shbin:/re/bin:/re/thirdparty_tools/java/tags/linux/Production/bin:/opt/pegasus/bin:/re/thirdparty_tools/ant/tags/Production/bin:/c4shares/auto/devutils/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin:/usr/NX/bin
GROOVY_HOME: null
[Groovy Version] $ /var/lib/jenkins/tools/hudson.plugins.groovy.GroovyInstallation/Groovy_2.4.3/bin/groovy "/var/lib/jenkins/workspace/Groovy Version/hudson6179818785298037506.groovy" Sep 24, 2015 8:11:25 AM org.codehaus.groovy.runtime.m12n.MetaInfExtensionModule newModule WARNING: Module [groovy-nio] - Unable to load extension class [org.codehaus.groovy.runtime.NioGroovyMethods] Execute Groovy script - non-System
Start of Divesh's Request:
public java.lang.Object groovy.json.JsonSlurper.parse(byte[])
public java.lang.Object groovy.json.JsonSlurper.parse(char[])
public java.lang.Object groovy.json.JsonSlurper.parse(java.io.File)
public java.lang.Object groovy.json.JsonSlurper.parse(java.io.InputStream)
public java.lang.Object groovy.json.JsonSlurper.parse(java.io.Reader)
public java.lang.Object groovy.json.JsonSlurper.parse(java.net.URL)
public java.lang.Object groovy.json.JsonSlurper.parse(byte[],java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parse(java.io.File,java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parse(java.io.InputStream,java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parse(java.net.URL,java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parse(java.net.URL,java.util.Map)
public java.lang.Object groovy.json.JsonSlurper.parse(java.util.Map,java.net.URL)
public java.lang.Object groovy.json.JsonSlurper.parse(java.net.URL,java.util.Map,java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parse(java.util.Map,java.net.URL,java.lang.String)
public java.lang.Object groovy.json.JsonSlurper.parseText(java.lang.String)Finished: SUCCESS