user2475310
user2475310

Reputation: 753

GroovyShell().parse passing parameters

I have a groovy script that needs to parse a class from an external groovy script. I am not sure how to pass parameters. Here is what works:

Groovy script I am running is using this line to parse the external class from external.groovy:

new GroovyShell().parse(new File('External.groovy'))

Here is what external.groovy looks like:

class External {
    public external() {
        println "Hello"
    }
}

It works.

The problem I am having, I cant find a way to pass parameters to the external method. Here is what external.groovy should look like:

class External {
    public external(String name) {
        println name
    }
}

How do I add parameters to the running script:

new GroovyShell().parse(new File('external.groovy')) //need to include the 'Name' parameter to this

Upvotes: 4

Views: 5070

Answers (1)

robkuz
robkuz

Reputation: 9904

  1. parse only parses your file and doesn't execute it
  2. you have to call run as well
  3. you need to instantiate your file AND you need to call your method and give it the parameter
  4. you need to give the parameter via an Binding object

Here is the class and the call

class External {
     public external(String name) {
        println name
    }
}
new External.external(somename)

and then

def bindings = new Binding()
bindings.setVariable("somename", "mrhaki")
def shell = new GroovyShell(bindings)
shell.parse(new File('external.groovy'))
shell.run()

Upvotes: 5

Related Questions