can you compile the groovy script to .class via groovyc? then you can use the groovy code within clojure via java interop.
On Thu, Aug 5, 2010 at 2:33 PM, Chris Goellner <cgoell...@gmail.com> wrote: > Hello all, long time listener first time caller. > > I've got a situation where I'm trying to apply some Groovy code > against a clojure hashmap. > > I've got: > > (ns neat > (:import (java.sql Timestamp) > (groovy.lang Binding GroovyShell) > (oracle.sql TIMESTAMP Datum) > (java.util.concurrent Executors ThreadFactory ThreadPoolExecutor > TimeUnit LinkedBlockingQueue ArrayBlockingQueue FutureTask) > (java.util TreeMap TreeSet Map Set List ArrayList Calendar > GregorianCalendar TimeZone)) > (:use (clojure.contrib sql string def logging))) > > to bring in GroovyShell and binding objects. > > I try to use this as: > > (defn execute-groovy [event current-rule rule-list] > (let [groovy_script (:groovy_script current-rule)] > (if (nil? groovy_script) > event > (let [groovy-binding (new Binding)] > (.setVariable groovy-binding "rule" current-rule) > (.setVariable groovy-binding "update" (:response event {})) > (.setVariable groovy-binding "event" event) > (.setVariable groovy-binding "ruleList" rule-list) > (let [groovy-shell (new GroovyShell groovy-binding)] > (.evaluate groovy-shell groovy_script) > (merge event {:response (merge (:response event {}) > {:groovy_script (conj (:groovy_script > (:response event {}) > (list)) (:id current-rule))} > (.getVariable groovy-binding > "update"))}) > ))))) > > This worked in one version of the code where I didn't use an ns but instead > did: > > (import '(groovy.lang Binding GroovyShell)) > > into user. > > The problem is I get the following error when I use it within the namespace: > > No matching method found: evaluate for class groovy.lang.GroovyShell > > I don't think this has anything to do with Groovy. For some reason the > code doesn't want to use groovy-shell as a GroovyShell. > > I can also do: > > (.evaluate (GroovyShell.) "1+1") > > in the REPL while in the neat ns. > > Any ideas? > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with your > first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en -- Omnem crede diem tibi diluxisse supremum. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en