groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Owen Rubel <oru...@gmail.com>
Subject Re: No Such Property - When executing script from Java.
Date Wed, 17 Jun 2015 02:35:50 GMT
The 'Bugger' exception is an internationalized error for people in Great
Britain to let them know they are truly fucked.

Seriously though, in the script you sent, it doesn't look like you declared
'formFilled'.

At a minimum, declare it with def:

def formFilled = new Action("Form Filled")


Owen Rubel
415-971-0976
orubel@gmail.com

On Tue, Jun 16, 2015 at 6:57 PM, Paul Henry <paul.henry@futrix.com> wrote:

> Hi All,
>
> I am trying to run a groovy script from Java and getting the following
> error
>
> <quote>Exception in thread "main"
> org.codehaus.groovy.runtime.metaclass.MissingPropertyExceptionNoStack: No
> such property: formFilled for class: Bugger</quote>
>
> My script looks like this.
>
> <quote>
> class Action {
>     String actionName
>     Action(actionName) {
>         this.actionName = actionName;
>     }
>     void execute() {
>         println "Doing $actionName"
>     }
> }
>
> formFilled = new Action("Form Filled")
>
> mailSent = new Action("Mail Sent")
>
> def invoke(action) {
>     this."$action".execute()
> }
>
> //----- These are runnable when run as a script.
> formFilled.execute()
> invoke("mailSent")
> </quote>
>
> If i execute the script directly then the last two lines execute and
> produce the expected Strings printed to the standard out.
>
> <quote>
> Doing Form Filled
> Doing Mail Sent
> </quote>
>
> I am trying to run it from Java with something like the following.
>
> <quote>
> Class scriptClass = new GroovyClassLoader().parseClass(new
> File(Bugger.groovy));
> Object scriptInstance = scriptClass.newInstance();
> scriptClass.getDeclaredMethod("invoke", new Class[]
> {}).invoke(scriptInstance, new Object[] {"formFilled"});
> </quote>
>
> But I keep getting the No Such property exception. Ive looked around for
> solutions, but either Im missing something so basic its generally
> understood, or i haven't found the right part of the internet.
>
> So Two questions.
>
> 1) why is the property not available / hidden. I don't understand why its
> not available to a method within what I expect is the class.
>
> 2) what change do I have to make to my code snippets to get it to work.
>
> (Note: I've created a simple example of the problem, rather than post my
> actual code. I am using groovy to define a DSL for describing actions. We
> then parse a script in that DSL defining different actions. During
> operation we want to trigger individual actions to execute on certain
> occurrences)
>
> Cheers
>
> -Paul
>
>
>
> Paul Henry
> Senior Technical Developer |
> 79 Boulcott Street, Level 2, Wellington 6011, New Zealand
> <https://maps.google.com/maps?q=79+Boulcott+Street,+Level+2,+Wellington+6011,+New+Zealand>
>
> tel +64 4 499 1327 | mob +64 22 161 8700
> paul.henry@futrix.com | www.futrix.com | LinkedIn
> <http://www.linkedin.com/company/futrix-ltd>
>
>

Mime
View raw message