Uploaded image for project: 'Groovy'
  1. Groovy
  2. GROOVY-8975

GroovyCastException on the result of CliBuilder.parseFromSpec

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 2.5.5
    • Fix Version/s: 3.0.0-beta-1, 2.5.7
    • Component/s: groovy-runtime
    • Labels:
      None

      Description

      I'm trying to follow the tutorial about the use of CliBuilder in Groovy with Groovy 2.5.5. Copying the code at Annotating methods of an interface paragraph, at runtime I have the following Exception:

      Exception in thread "main" org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '{help=groovy.cli.picocli.CliBuilder$_extractAttributesFromMethod_closure12@3bb9a3ff}' with class 'java.util.LinkedHashMap' to class 'mypackage.IHello' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: mypackage.IHello(LinkedHashMap)
              at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnSAM(DefaultTypeTransformation.java:412)
              at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnNumber(DefaultTypeTransformation.java:328)
              at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:242)
              at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:617)
              at mypackage.MyMain.main(MyMain.groovy:20)Exception in thread "main" org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '{help=groovy.cli.picocli.CliBuilder$_extractAttributesFromMethod_closure12@3bb9a3ff}' with class 'java.util.LinkedHashMap' to class 'mypackage.IHello' due to: groovy.lang.GroovyRuntimeException: Could not find matching constructor for: mypackage.IHello(LinkedHashMap)
              at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnSAM(DefaultTypeTransformation.java:412)
              at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnNumber(DefaultTypeTransformation.java:328)
              at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:242)
              at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:617)
              at mypackage.MyMain.main(MyMain.groovy:20)

      The exception occurs at this line:
      IHello hello = cli.parseFromSpec(IHello, argz)

      The exception goes away (and all works fine) if I replace it with:
      def hello = cli.parseFromSpec(IHello, argz)

      I tried to downgrade Groovy down to version 2.5.0 and I always get the exception. So this really puzzles me, since the mentioned tutorial is quite simple and straight to follow...

        Attachments

        1. GROOVY-8975.zip
          99 kB
          Remko Popma
        2. TestGroovy8975.zip
          55 kB
          Mauro Molinari

          Activity

            People

            • Assignee:
              paulk Paul King
              Reporter:
              mauromol Mauro Molinari
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: