groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mickaƫl SALMON ...@sylob.com>
Subject please help : GroovyCastException: why ?
Date Mon, 24 Feb 2020 17:24:46 GMT
Hello,

I'm using last Groovy version (3.0.1) in my Java application to run user defined scripts (Java
based).
Here is how a script is executed (sorry for the formatting) :

   public Object eval(String scriptName, String script, Map<String, Object> mapVariable)
                   throws CochiseException {
       groovy.lang.Script groovyScript = this.scriptCache.get(scriptName);
       if (groovyScript == null) {
           groovyScript = new GroovyShell().parse(script);
           this.scriptCache.put(scriptName, groovyScript);
       }
       groovyScript.setBinding(new Binding(mapVariable));
       return groovyScript.run();
   }

I have the following exception when I pass the object "Article" of class "com.sylob.cochise.dm1.ejb.entite.article.Article"
in the Map of variables :
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'interface
com.sylob.cochise.dm1.ejb.entite.article.Article' with class 'java.lang.Class' to class 'com.sylob.cochise.dm1.ejb.entite.article.Article'

Here is the script :

import com.sylob.cochise.dm1.ejb.entite.article.Article;

println "CL import Article : " +  Article.class.getClassLoader()
println "CL var Article: " + Article.getClass().getClassLoader()

Article articleTmp = (Article) Article;
// ... some stuff

This not seem to be a classLoader problem, because same class loader is used to load both
com.sylob.cochise.dm1.ejb.entite.article.Article class in the script and "Article" object
in the calling application.
Also tested with 2.5.9, same error.

What's wrong here ?

Thanks.


Mime
View raw message