<?xml version="1.0" encoding='utf-8'?>
<!-- 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
-->
<?xml-stylesheet type="text/xsl" href="https://rollerweblogger.org/roller-ui/styles/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom">
    <title type="html">Blogging Roller</title>
    <subtitle type="html">Dave Johnson on open web technologies, social software and software development</subtitle>
    <id>https://rollerweblogger.org/roller/feed/entries/atom</id>
        <link rel="self" type="application/atom+xml" href="https://rollerweblogger.org/roller/feed/entries/atom?tags=groovy" />
    <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/" />
    <updated>2026-04-28T07:02:22+00:00</updated>
    <generator uri="http://roller.apache.org" version="6.1.5">Apache Roller</generator>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/groovy_netbeans</id>
        <title type="html">Groovy support back in Netbeans</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/groovy_netbeans"/>
        <published>2007-11-28T09:05:28+00:00</published>
        <updated>2007-11-28T17:05:28+00:00</updated> 
        <category term="Java" label="Java" />
        <category term="groovy" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="netbeans" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;After going missing in NB 5.5, Groovy support is back in Netbeans. Basic Groovy support with syntax coloring and support for running scripts from the IDE is available in plugin form (&lt;a href=&quot;http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=3914&quot;&gt;download page&lt;/a&gt;) for Netbeans 6.0 (starting with RC2), read about it on  
&lt;a href=&quot;http://blogs.sun.com/geertjan/entry/groovy_plugin_updates_to_netbeans&quot;&gt;Geertjan&amp;#39;s blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here&amp;#39;s what&amp;#39;s coming after Netbeans 6.0, Groovy project support:&amp;lt;/&amp;gt;

&lt;img src=&quot;http://rollerweblogger.org/roller/resource/netbeans-grails.jpg&quot; alt=&quot;screenshot of Groovy NB project types&quot;&gt;

&lt;p&gt;After Netbeans 6.0, the story gets better. &lt;a href=&quot;http://blogs.sun.com/geertjan/entry/big_milestone_for_groovy_and&quot;&gt;Geertjan writes&lt;/a&gt; that a brand new Groovy plugin will be available in the post-6.0 builds that adds support for three types of Groovy projects: applications, class libraries and Grails webapps.&lt;/p&gt;&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/zero</id>
        <title type="html">Zero</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/zero"/>
        <published>2007-07-02T09:28:53+00:00</published>
        <updated>2007-07-02T16:54:42+00:00</updated> 
        <category term="Java" label="Java" />
        <category term="groovy" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="rest" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">IBM&amp;#39;s &lt;a href=&quot;http://www.projectzero.org&quot;&gt;project Zero&lt;/a&gt; has de-cloaked.

&lt;blockquote&gt;
Project Zero introduces a simple environment for creating, assembling and executing applications based on popular Web technologies. The Project Zero environment includes a scripting runtime for Groovy and PHP with application programming interfaces optimized for producing REST-style services, integration mash-ups and rich Web interfaces.
&lt;/blockquote&gt;

Smells a lot like &lt;a href=&quot;https://phobos.dev.java.net/&quot;&gt;Phobos&lt;/a&gt; (see also &lt;a href=&quot;http://weblogs.java.net/blog/robc/archive/2006/11/phobos_meets_th.html&quot;&gt;Phobos Meets Atom, REST&lt;/a&gt;), but Phobos is focusing on server-side JavaScript first. Oh, and Phobos &lt;i&gt;is&lt;/i&gt; open source. Project Zero is not. 

&lt;blockquote&gt;
&amp;quot;This community is an experiment in a new way to build commercial software, an approach we are currently calling Community-Driven Commercial Development. Community-Driven means that we want feedback, insight, suggestions, criticism, and dialogue with you, the users of Project Zero. This interaction will yield a better solution that is more targeted at the problems you have and a technology that truly delivers on its objectives. Commercial means that this is not an open source project.&amp;quot;
&lt;/blockquote&gt;

Community-driven? Sounds like the community is a back-seat driver with freedom to complain but no access to the steering wheel, gas pedal or breaks.</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/basic_groovy_for_netbeans_6</id>
        <title type="html">Basic Groovy, for Netbeans 6.0</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/basic_groovy_for_netbeans_6"/>
        <published>2007-05-21T16:24:23+00:00</published>
        <updated>2007-05-21T23:24:23+00:00</updated> 
        <category term="Java" label="Java" />
        <category term="groovy" scheme="http://roller.apache.org/ns/tags/" />
        <category term="java" scheme="http://roller.apache.org/ns/tags/" />
        <category term="netbeans" scheme="http://roller.apache.org/ns/tags/" />
        <content type="html">&lt;p&gt;Speaking of open source projects that need help, there&amp;#39;s &lt;a href=&quot;https://coyote.dev.java.net/&quot;&gt;Coyote&lt;/a&gt;, which promised to bring scripting support to Netbeans and did so for Netbeans 5.0. Since then, the project has been pretty stagnant. JRuby&amp;#39;s getting all the attention these days.&lt;br&gt;&lt;/p&gt;&lt;p&gt; &lt;a href=&quot;http://blogs.sun.com/geertjan/entry/basic_groovy&quot;&gt;Geertjan is doing his best&lt;/a&gt; to jump-start Groovy support in Netbeans, but it&amp;#39;s not really his job. He&amp;#39;s gone beyond the call of duty and it looks like he&amp;#39;s got something pretty functional going, which is very nice. I&amp;#39;ve been doing some Groovy scripting lately, so I&amp;#39;ll try it out. It would be cool if the Groovy project itself had time to help out, or even take over, but they&amp;#39;re probably pretty busy too.
&lt;/p&gt;</content>
    </entry>
    <entry>
        <id>https://rollerweblogger.org/roller/entry/groovy_roller_redux</id>
        <title type="html">Pluggable renderers and scripting languages in Roller</title>
        <author><name>Dave Johnson</name></author>
        <link rel="alternate" type="text/html" href="https://rollerweblogger.org/roller/entry/groovy_roller_redux"/>
        <published>2007-03-11T23:45:03+00:00</published>
        <updated>2007-03-12T18:51:20+00:00</updated> 
        <category term="Roller" label="Roller" />
        <category term="groovy" scheme="http://roller.apache.org/ns/tags/" />
        <category term="javascript" scheme="http://roller.apache.org/ns/tags/" />
        <category term="jruby" scheme="http://roller.apache.org/ns/tags/" />
        <category term="roller" scheme="http://roller.apache.org/ns/tags/" />
        <category term="scripting" scheme="http://roller.apache.org/ns/tags/" />
        <summary type="html">My next ApacheCon talk is about &lt;a href=&quot;http://www.eu.apachecon.com/program/talk/87&quot;&gt;Roller and blogs as a web development platform&lt;/a&gt;.
One of the things I plan to discuss is using scripting languages within
Roller, something that&amp;#39;s possible now because Roller versions 3.0 and
later supports pluggable renderers. It&amp;#39;s undocumented and a little hacky right now, but by plugging in your own custom
renderers you can add support for new template and scripting languages
as alternatives to Roller&amp;#39;s built-in &lt;a href=&quot;http://velocity.apache.org/&quot;&gt;Velocity&lt;/a&gt;. Want to know more?&amp;nbsp;</summary>
        <content type="html">&lt;p&gt;My next ApacheCon talk is about &lt;a href=&quot;http://www.eu.apachecon.com/program/talk/87&quot;&gt;Roller and blogs as a web development platform&lt;/a&gt;. One of the things I plan to discuss is using scripting languages within Roller, something that&amp;#39;s possible now because Roller versions 3.0 and later allows pluggable renderers. It&amp;#39;s undocumented and a little hacky right now, but by plugging in your own custom renderers you can add support for new template and scripting languages as alternatives to Roller&amp;#39;s built-in &lt;a href=&quot;http://velocity.apache.org/&quot;&gt;Velocity&lt;/a&gt;. Here are some notes on the whys and hows.&lt;br&gt; &lt;/p&gt;&lt;p&gt;&lt;b&gt;Why would you want to plugin a new scripting or template language?&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I can think of two reasons you might want to plug-in a new renderer to Roller. If you&amp;#39;re not happy with Velocity and want to plugin an alternative template language like Freemarker you can do it with a custom renderer. Or, if you&amp;#39;re developing sophisticated Roller templates and you need a more sophisticated programming language like Groovy, JRuby or Javascript then custom renderers are your best bet.&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;What can you do in an alternative scripting or template language?&lt;/b&gt;&lt;/p&gt;&lt;p&gt;In an alternative template or scripting language you can access the normal Roller model objects (see the &lt;a href=&quot;http://people.apache.org/~snoopdave/roller30-template-guide.pdf&quot;&gt;Roller Template Guide&lt;/a&gt; for a reference) and you can generate just about any type of content you want. However, you cannot access the Roller macros because they&amp;#39;re written in and require Velocity.&lt;br&gt; &lt;/p&gt;&lt;p&gt;It&amp;#39;s also worth noting that you can get in quite a bit of trouble with an alternative language. Roller&amp;#39;s built-in Velocity renderer allows users to access only a very limited set of objects, but other scripting and template languages might not be so safe. That&amp;#39;s why you might not want to make all plugin renderers available to all of your users.&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;How do you implement scripting in a plugin renderer?&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I plan on documenting the process at some point, but basically you implement two simple interfaces: &lt;a href=&quot;http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/RendererFactory.java?revision=443329&amp;amp;view=markup&quot;&gt;RendererFactory&lt;/a&gt; and &lt;a href=&quot;http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/ui/rendering/Renderer.java?revision=443329&amp;amp;view=markup&quot;&gt;Renderer&lt;/a&gt;. So far, I&amp;#39;ve developed three plugin renderers: BSFRenderer, GroovletRenderer and GSPRenderer. Let&amp;#39;s discuss each so you can see how they work.&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;A BSFRenderer example&lt;/b&gt;&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;http://jakarta.apache.org/bsf/&quot;&gt;Bean Scripting Framework&lt;/a&gt; (BSF)&amp;nbsp;  makes it easy to call a wide variety of scripting languages from Java and because it works with Java SE 5, it&amp;#39;s a better choice for Roller than the Java SE 6 scripting extensions. I developed a BSF renderer (&lt;a href=&quot;http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/scripting/bsf/src/org/apache/roller/scripting/BSFRendererFactory.java?revision=517070&amp;amp;view=markup&quot;&gt;BSFRendererFactory&lt;/a&gt; and &lt;a href=&quot;http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/scripting/bsf/src/org/apache/roller/scripting/BSFRenderer.java?revision=517070&amp;amp;view=markup&quot;&gt;BSFRenderer&lt;/a&gt;) and with it, it&amp;#39;s theoretically possible to
support the use of just about any BSF scripting language in a Roller
template. I&amp;#39;ve tried Groovy and JavaScript and they both work fine, but JRuby has some conflicts with the version of Hibernate that we&amp;#39;re using in Roller so I&amp;#39;ll have to revisit JRuby later. &lt;/p&gt;&lt;p&gt;Unfortunately, with the BSFRenderer you&amp;#39;re stuck writing Servlet-like code like this Groovy example:&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.println(&amp;quot;&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;&amp;quot;)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.println(&amp;quot;Hello World, my blog is ${model.weblog.name}&amp;quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; out.println(&amp;quot;&amp;lt;/body&amp;gt;&amp;lt;/html&amp;gt;&amp;quot;); &lt;/p&gt;&lt;p&gt;Ugh. Nothing to write home about, that&amp;#39;s for sure. Fortunately, there&amp;#39;s something better.&lt;/p&gt;&lt;p&gt;&lt;b&gt;A GroovletRenderer example&lt;/b&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;I also developed a GroovletRenderer and a Groovy Server Pages (GSP) GSPRenderer, which look more promising. These renderers call Groovy directly and behave like the &lt;a href=&quot;http://groovy.codehaus.org/Groovlets&quot;&gt;Groovlet&lt;/a&gt; and &lt;a href=&quot;http://groovy.codehaus.org/Groovy+Templates&quot;&gt;Groovy Template&lt;/a&gt; Servlets that come with Groovy.&lt;/p&gt;&lt;p&gt;With my new GroovletRenderer (&lt;a href=&quot;http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/scripting/groovy/src/org/apache/roller/scripting/GroovletRendererFactory.java?view=markup&quot;&gt;GroovletRendererFactory&lt;/a&gt; and &lt;a href=&quot;http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/scripting/groovy/src/org/apache/roller/scripting/GroovletRenderer.java?view=markup&quot;&gt;GroovletRenderer&lt;/a&gt;), you can use the GroovyMarkup builder to build HTML. Here&amp;#39;s an example that displays a blog title, description and most recent entries:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; html.html { // html is implicitly bound to new MarkupBuilder(out)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; head {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; title(model.weblog.name)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; body {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h1(model.weblog.name)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i(model.weblog.description)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map = model.getWeblogEntriesPager().getEntries();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.keySet().each() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.get(it).each() {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h2(it.title)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p(it.text)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; br()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&lt;/p&gt;&lt;p&gt;Starting to look more interesting, no? &lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;A GSPRenderer example&lt;/b&gt;&lt;/p&gt;&lt;p&gt;I also developed a GSPRenderer &lt;a href=&quot;http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/scripting/groovy/src/org/apache/roller/scripting/GSPRendererFactory.java?view=markup&quot;&gt;(GSPRendererFactory&lt;/a&gt; and &lt;a href=&quot;http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/scripting/groovy/src/org/apache/roller/scripting/GSPRendererFactory.java?view=markup&quot;&gt;GSPRenderer&lt;/a&gt;), which allows you to use a JSP like syntax with &amp;lt;% %&amp;gt; and &amp;lt;%= %&amp;gt;. Here&amp;#39;s the above example, but rewritten as a Roller GSP page:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;html&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;head&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;${model.weblog.name}&amp;lt;/title&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;&lt;br&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;lt;h1&amp;gt;${model.weblog.name}&amp;lt;/h1&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;i&amp;gt;${model.weblog.description}&amp;lt;/i&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;% map = model.getWeblogEntriesPager().getEntries();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; map.keySet().each() { %&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;% map.get(it).each() { %&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;h2&amp;gt;${it.title}&amp;lt;/h2&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;${it.text}&amp;lt;/p&amp;gt;&amp;lt;br /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;% } &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }%&amp;gt; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/html&amp;gt; &lt;br&gt;&lt;/p&gt;&lt;p&gt;That&amp;#39;s all I have time for tonight. Next I hope tackle JRuby and hopefully I&amp;#39;ll find some way to support some form of JRuby templating too. Where is all this going? I don&amp;#39;t know. I&amp;#39;m not sure these plugins will make it into the Roller 4.0 release, but I do hope to make it easier to drop them and renderer plugins like them into Roller 4.0. &lt;/p&gt;</content>
    </entry>
</feed>

