[ https://issues.apache.org/jira/browse/GROOVY-4777?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ilguiz Latypov updated GROOVY-4777: ----------------------------------- Attachment: build.gradle > GString cannot be cast to java.lang.String while iterating a collection from > java > --------------------------------------------------------------------------------- > > Key: GROOVY-4777 > URL: https://issues.apache.org/jira/browse/GROOVY-4777 > Project: Groovy > Issue Type: Bug > Components: groovy-runtime > Affects Versions: 1.7.10 > Environment: Linux > Reporter: David Gomez > Priority: Major > Attachments: GStringTest.java, GStringTest.java, build.gradle > > > When i try to iterate a map that contains GStrings i get a > {noformat} > java.lang.ClassCastException: org.codehaus.groovy.runtime.GStringImpl cannot > be cast to java.lang.String > at experiments.inputdata.GStringCastTest.testCast(GStringCastTest.java:24) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at junit.framework.TestCase.runTest(TestCase.java:154) > at junit.framework.TestCase.runBare(TestCase.java:127) > at junit.framework.TestResult$1.protect(TestResult.java:106) > at junit.framework.TestResult.runProtected(TestResult.java:124) > at junit.framework.TestResult.run(TestResult.java:109) > at junit.framework.TestCase.run(TestCase.java:118) > at junit.framework.TestSuite.runTest(TestSuite.java:208) > at junit.framework.TestSuite.run(TestSuite.java:203) > at > org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130) > at > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) > {noformat} > Here is the code snippet: > {code} > ConfigSlurper slurper = new ConfigSlurper(); > String script = > "example {\n" + > " one = \"one\"\n" + > " two = \"${one} + ${one}\"\n" + > " three = \"${two} + ${one}\"\n" + > "}"; > ConfigObject config = slurper.parse(script); > Map<String, String> e = (Map<String, String>) config.get("example"); > for (String k : e.keySet()) { > String v = e.get(k); > System.out.println(v); > } > {code} > See attached JUnit test case. -- This message was sent by Atlassian JIRA (v7.6.3#76005)