Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-40514

Typing Return Value of readMavenPom Causes ClassCastException

      import org.apache.maven.model.Model
      
      Model mavenProject = readMavenPom(file: pom)
      

      The above groovy script causes a ClassCastException when executing a Pipeline script:

      [Pipeline] echo
      Marking build as failure due to the following error: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'com.foo:bar-api:jar:0.6.1-201612151515.0777507' with class 'org.apache.maven.model.Model' to class 'org.apache.maven.model.Model'
      [Pipeline] stage
      

          [JENKINS-40514] Typing Return Value of readMavenPom Causes ClassCastException

          Tim Eapen created issue -
          Tim Eapen made changes -
          Description Original: {code:java}
          import org.apache.maven.model.Model

          Model mavenProject = readMavenPom(file: pom)
          {code}

          The above groovy script causes a ClassCastException when executing a Pipeline script:

          {code:java}
          [Pipeline] echo
          Marking build as failure due to the following error: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'com.rbc.rbcone.shared.authorization:rbcone-shared-authorization-api:jar:0.6.1-201612151515.0777507' with class 'org.apache.maven.model.Model' to class 'org.apache.maven.model.Model'
          [Pipeline] stage
          {code}
          New: {code:java}
          import org.apache.maven.model.Model

          Model mavenProject = readMavenPom(file: pom)
          {code}

          The above groovy script causes a ClassCastException when executing a Pipeline script:

          {code:java}
          [Pipeline] echo
          Marking build as failure due to the following error: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'com.foo:bar-api:jar:0.6.1-201612151515.0777507' with class 'org.apache.maven.model.Model' to class 'org.apache.maven.model.Model'
          [Pipeline] stage
          {code}

          Tim Eapen added a comment - - edited

          Stacktrace for the above error. Lookse like the DefautlTypeTransformation class cannot cast the return object properly.

          hudson.remoting.ProxyException: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'com.foo:bar-api:jar:0.6.1-201612161044.0777507' with class 'org.apache.maven.model.Model' to class 'org.apache.maven.model.Model'
          	at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnSAM(DefaultTypeTransformation.java:405)
          	at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnNumber(DefaultTypeTransformation.java:319)
          	at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:232)
          	at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:603)
          	at Unknown.Unknown(Unknown)
          	at maven.purgeLocalRepository(/var/jenkins_home/jobs/rbcone-shared-authorization-api/branches/master/builds/16/libs/commons/vars/maven.groovy:9)
          	at WorkflowScript.cleanup(WorkflowScript:33)
          	at ___cps.transform___(Native Method)
          	at com.cloudbees.groovy.cps.impl.LocalVariableBlock$LocalVariable.set(LocalVariableBlock.java:45)
          	at com.cloudbees.groovy.cps.impl.AssignmentBlock$ContinuationImpl.assignAndDone(AssignmentBlock.java:70)
          	at sun.reflect.GeneratedMethodAccessor288.invoke(Unknown Source)
          	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
          	at java.lang.reflect.Method.invoke(Method.java:498)
          	at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
          	at com.cloudbees.groovy.cps.Outcome.resumeFrom(Outcome.java:73)
          	at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:146)
          	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18)
          	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:33)
          	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:30)
          	at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)
          	at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:30)
          	at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:163)
          	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:324)
          	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:78)
          	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:236)
          	at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:224)
          	at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:63)
          	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          	at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
          	at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
          	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
          	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
          	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
          	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
          	at java.lang.Thread.run(Thread.java:745)
          Finished: FAILURE
          

          Tim Eapen added a comment - - edited Stacktrace for the above error. Lookse like the DefautlTypeTransformation class cannot cast the return object properly. hudson.remoting.ProxyException: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'com.foo:bar-api:jar:0.6.1-201612161044.0777507' with class 'org.apache.maven.model.Model' to class 'org.apache.maven.model.Model' at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnSAM(DefaultTypeTransformation.java:405) at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnNumber(DefaultTypeTransformation.java:319) at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:232) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:603) at Unknown.Unknown(Unknown) at maven.purgeLocalRepository(/ var /jenkins_home/jobs/rbcone-shared-authorization-api/branches/master/builds/16/libs/commons/vars/maven.groovy:9) at WorkflowScript.cleanup(WorkflowScript:33) at ___cps.transform___(Native Method) at com.cloudbees.groovy.cps.impl.LocalVariableBlock$LocalVariable.set(LocalVariableBlock.java:45) at com.cloudbees.groovy.cps.impl.AssignmentBlock$ContinuationImpl.assignAndDone(AssignmentBlock.java:70) at sun.reflect.GeneratedMethodAccessor288.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72) at com.cloudbees.groovy.cps.Outcome.resumeFrom(Outcome.java:73) at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:146) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:33) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:30) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108) at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:30) at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:163) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:324) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:78) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:236) at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:224) at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:63) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112) at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang. Thread .run( Thread .java:745) Finished: FAILURE

          Same issue

          jenkins 2.37, Pipeline 2.4 and Pipeline Utility Steps 1.2.2

          medy belmokhtar added a comment - Same issue jenkins 2.37, Pipeline 2.4 and Pipeline Utility Steps 1.2.2

          Ditto with Jenkins 2.19.1, Pipeline 2.4 and Pipeline Utility Steps 1.2.2

          It used to work though with 2.19.1, Pipeline 2.4 and Pipeline Utility Steps 1.1.6

          Sascha Volkenandt added a comment - Ditto with Jenkins 2.19.1, Pipeline 2.4 and Pipeline Utility Steps 1.2.2 It used to work though with 2.19.1, Pipeline 2.4 and Pipeline Utility Steps 1.1.6

          Andrew Bayer added a comment -

          This sounds like http://stackoverflow.com/questions/34068168/groovy-binding-cannot-cast-object-with-class-custompackage-customclass-to-cla - could you try doing def mavenProject = readMavenPom(file: pom) instead of Model mavenProject ... and see if that helps?

          Andrew Bayer added a comment - This sounds like http://stackoverflow.com/questions/34068168/groovy-binding-cannot-cast-object-with-class-custompackage-customclass-to-cla  - could you try doing def mavenProject = readMavenPom(file: pom) instead of Model mavenProject ... and see if that helps?
          Jesse Glick made changes -
          Component/s New: pipeline-utility-steps-plugin [ 21135 ]
          Component/s Original: pipeline [ 21692 ]

          Jesse Glick added a comment -

          Perhaps some other plugin is also loading maven-core. Probably maven-plugin.

          I would not recommend importing org.apache.maven.model.* classes; use dynamic typing.

          Or just avoid the readMavenPom step altogether, and use something like

          def version = sh script: '''
          mvn help:evaluate -Dexpression=project.version | perl -n -e 'print $1 if /^([0-9.]+(-SNAPSHOT)?)$/'
          ''', returnStdout: true
          

          Jesse Glick added a comment - Perhaps some other plugin is also loading maven-core . Probably maven-plugin . I would not recommend importing org.apache.maven.model.* classes; use dynamic typing. Or just avoid the readMavenPom step altogether, and use something like def version = sh script: ''' mvn help:evaluate -Dexpression=project.version | perl -n -e 'print $1 if /^([0-9.]+(-SNAPSHOT)?)$/' ''', returnStdout: true
          Jesse Glick made changes -
          Link New: This issue is duplicated by JENKINS-40432 [ JENKINS-40432 ]

          I have the same problem. def mavenProject works, but Model mavenProject throws the same exception.

          Michael Düsterhus added a comment - I have the same problem. def mavenProject works, but Model mavenProject throws the same exception.

            Unassigned Unassigned
            timeapen Tim Eapen
            Votes:
            3 Vote for this issue
            Watchers:
            9 Start watching this issue

              Created:
              Updated: