After meeting Paul King of the Groovy Team at Apache Con US 08 in New Orleans, I set out to take a stab at SLING-315 again to add Groovy support to Sling. It turned out, that the current Groovy 1.6 branch already contains the required setup to build the groovy-all.jar as an OSGi Bundle, which is directly usable with Sling by just installing that bundle.
As of this writing (9. Dec. 2008), there is no downloadable build of the groovy-all.jar containing the correct headers. So here is how to build it yourself and use it with Sling. I have tested groovy-all-1.6-beta-2-20081008.214907-8.jar
.
Get and Build Groovy
Checkout the Groovy 1.6 branch into a separate directory (we use groovy16 here):
Next build groovy using Apache Ant (Ant 1.7 or higher is required)
If you don't want to run the tests, which may take quite some time, build Groovy using the -DskipTests=true option:
Wait for the process to complete and you find the groovy-all-1.6-RC-1-SNAPSHOT.jar file in the target/install/embeddable folder.
Deployment
To deploy the bundle go to the Bundles page, for example at http\://localhost:8888/system/console/bundles of the Apache Felix Web Console select the bundle file to upload, check the Start check box and click Install or Update button.
You may check, whether the Groovy ScriptEngine has been "accepted" by Sling, by going to the Script Engines page of the Apache Felix Web Console. You should see the entry for Groovy there, somthing like this:
Testing
To test create a simple Groovy script, for example
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
println "Hello World !"
println "This is Groovy Speaking"
println "You requested the Resource ${resource} (yes, this is a GString)"
and upload it to the repository as /apps/nt/folder/GET.groovy using your favourite WebDAV client or use curl to upload the file (assuming Sling is running on localhost:8888) :
To test it create a /sample nt:Folder node using your favourite WebDAV client or use curl again:
Finally, request the /sample node using your favourite Browser or use curl again:
References
- SLING-315
– The initial Sling issue proposing the addition of a Groovy ScriptEngine to Sling.
- Groovy Support in Apache Sling
– A short thread on turning the Groovy groovy-all.jar into an OSGi Bundle.