<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-8662705757379383704</atom:id><lastBuildDate>Tue, 27 Oct 2009 04:42:43 +0000</lastBuildDate><title>Cars N Code</title><description>What do you get when you cross a code monkey with a petrol head? A petrol monkey!</description><link>http://www.leebutts.com/</link><managingEditor>noreply@blogger.com (Lee Butts)</managingEditor><generator>Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/CarsNCode" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-5897218011168685395</guid><pubDate>Tue, 27 Oct 2009 04:38:00 +0000</pubDate><atom:updated>2009-10-27T14:42:43.892+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hillclimb</category><category domain="http://www.blogger.com/atom/ns#">VR-4</category><category domain="http://www.blogger.com/atom/ns#">Mistubisihi</category><category domain="http://www.blogger.com/atom/ns#">legnum</category><title>Wow! Two car related posts in a row!</title><description>Here's some in-car footage from the Grafton Hillclimb. It's a short, tight course about 3 hours south of the Gold Coast. They hold 4 or 5 of these each year. Heaps of fun! I set a new PB this trip, beating my old best time by about 5 seconds thanks to better tires and suspension.&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;
&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/qc1mm2yYYO8&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/qc1mm2yYYO8&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;br/&gt;
&lt;br/&gt;
Check out &lt;a href="http://www.motorsportphotography.com.au"&gt;Motorsport Photography&lt;/a&gt; for heaps of great shots of the events (including me!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-5897218011168685395?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/AHBGlZBFnNyOxaaVg_iKcOBYsU4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AHBGlZBFnNyOxaaVg_iKcOBYsU4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/AHBGlZBFnNyOxaaVg_iKcOBYsU4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/AHBGlZBFnNyOxaaVg_iKcOBYsU4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=r37R7ipaE_Q:lvmY6RHJjB8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=r37R7ipaE_Q:lvmY6RHJjB8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/r37R7ipaE_Q/wow-two-car-related-posts-in-row.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/10/wow-two-car-related-posts-in-row.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-1004983859965520435</guid><pubDate>Fri, 16 Oct 2009 05:49:00 +0000</pubDate><atom:updated>2009-10-16T15:59:20.309+10:00</atom:updated><title>Finally something car related</title><description>So I've been very lazy with posting anything car related but finally have something interesting :)

Here's some youtube video from my last two outings in the VR4. The first was to a track day at Queensland Raceway and the second was drag racing the following day.
&lt;br/&gt;&lt;br/&gt;

&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/6uZBBwqhBbA&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/6uZBBwqhBbA&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;

&lt;br/&gt;&lt;br/&gt;

&lt;a href="http://s3.photobucket.com/albums/y58/leebutts/willowbank/?action=view&amp;current=_MG_7329-3.jpg" target="_blank"&gt;&lt;img src="http://i3.photobucket.com/albums/y58/leebutts/willowbank/_MG_7329-3.jpg" border="0" alt="Photobucket"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;

&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/DePlRpWtnW0&amp;hl=en&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/DePlRpWtnW0&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-1004983859965520435?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/M3TgZooPfkxCfeAhtKYK-8QH-oA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M3TgZooPfkxCfeAhtKYK-8QH-oA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/M3TgZooPfkxCfeAhtKYK-8QH-oA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M3TgZooPfkxCfeAhtKYK-8QH-oA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=eqiPPfX10yk:aMtziGbUfsM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=eqiPPfX10yk:aMtziGbUfsM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/eqiPPfX10yk/finally-something-car-related.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/10/finally-something-car-related.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-7846326524520212290</guid><pubDate>Fri, 16 Oct 2009 05:47:00 +0000</pubDate><atom:updated>2009-10-16T15:49:09.620+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">plugins</category><category domain="http://www.blogger.com/atom/ns#">grails plugin</category><category domain="http://www.blogger.com/atom/ns#">grails</category><title>Grails Amazon S3 0.7.4 Released</title><description>see &lt;a href="http://refactor.com.au/blog/grails-amazon-s3-074-released"&gt;http://refactor.com.au/blog/grails-amazon-s3-074-released&lt;/a&gt;
&lt;br/&gt;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-7846326524520212290?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/dMlZpAtAoXC8zpIK5SnokY6eBeU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dMlZpAtAoXC8zpIK5SnokY6eBeU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/dMlZpAtAoXC8zpIK5SnokY6eBeU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/dMlZpAtAoXC8zpIK5SnokY6eBeU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=2Ta89nmZX8M:h8xHC4mFHVQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=2Ta89nmZX8M:h8xHC4mFHVQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/2Ta89nmZX8M/grails-amazon-s3-074-released.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/10/grails-amazon-s3-074-released.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-7907458763454842790</guid><pubDate>Fri, 11 Sep 2009 02:15:00 +0000</pubDate><atom:updated>2009-09-11T12:16:19.416+10:00</atom:updated><title>Grails WebTest Plugin 1.2.0 Released</title><description>See &lt;a href="http://refactor.com.au/blog/grails-webtest-plugin-120-released"&gt;http://refactor.com.au/blog/grails-webtest-plugin-120-released&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-7907458763454842790?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/siPpQQwklhsHN5cZC_xn3FO5ypc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/siPpQQwklhsHN5cZC_xn3FO5ypc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/siPpQQwklhsHN5cZC_xn3FO5ypc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/siPpQQwklhsHN5cZC_xn3FO5ypc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=pQg8VwWA5zc:dwHDLdwxYAI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=pQg8VwWA5zc:dwHDLdwxYAI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/pQg8VwWA5zc/grails-webtest-plugin-120-released.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/09/grails-webtest-plugin-120-released.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-1139055973572263885</guid><pubDate>Thu, 16 Jul 2009 05:23:00 +0000</pubDate><atom:updated>2009-07-16T15:24:14.932+10:00</atom:updated><title>Grails Amazon S3 Plugin 0.6.3 released</title><description>See &lt;a href="http://refactor.com.au/blog/grails-amazon-s3-plugin-063-released"&gt;http://refactor.com.au/blog/grails-amazon-s3-plugin-063-released&lt;/a&gt;
&lt;br/&gt;
&lt;br/&gt;
&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-1139055973572263885?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E2FAtdj_F15PiLDZ6DUsrw5QyBU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E2FAtdj_F15PiLDZ6DUsrw5QyBU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E2FAtdj_F15PiLDZ6DUsrw5QyBU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E2FAtdj_F15PiLDZ6DUsrw5QyBU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=oRhlQwGTNf4:UXgqzug3BLI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=oRhlQwGTNf4:UXgqzug3BLI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/oRhlQwGTNf4/grails-amazon-s3-plugin-063-released.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/07/grails-amazon-s3-plugin-063-released.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-2512796383534398617</guid><pubDate>Sat, 13 Jun 2009 03:17:00 +0000</pubDate><atom:updated>2009-06-13T14:24:57.285+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">webflow</category><category domain="http://www.blogger.com/atom/ns#">web flow</category><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">groovy</category><title>Adding pagination to a Grails WebFlow state</title><description>I noticed a few unanswered questions relating to paginating a WebFlow state on the users mailing list and thought I'd post the solution I came up with for a &lt;a href="http://www.refactor.com.au/"&gt;Refactor&lt;/a&gt; project I was working on last week.&lt;br/&gt;
&lt;br/&gt;
It basically involves splitting the behaviour into an action and a view state with a transition between them called 'paginate'&lt;br/&gt;

&lt;pre name="code" class="java"&gt;
loadResults {
 action {
    def criteria = MyDomain.createCriteria(){
        eq('someField','someval')
    }
    flow.myDomainResults  = criteria.list([max: 9, offset: flow.myDomainOffset ?: 0])   
    flow.totalMyDomains = flow.myDomainResults.totalCount
    return success()
 }
 on('success').to('browse')
 on(Exception).to "handleError"
}
browse {
 on('paginate') {
    flow.myDomainOffset = params.offset
 }.to('loadResults')
 on('selectItem').to('someOtherState')
 //...
}
&lt;/pre&gt;

One point to note is that I use a criteria in order to get the totalCount property populated for me automatically so that I don't have to run a separate query. Also, the above only works if your domain class is Serializable, in my real application this wasn't the case so I stored a list of maps containing the properties I wanted to display instead of the list of domain objects.&lt;br/&gt;
&lt;br/&gt;
Then in the view all we need to do is to pass the current page from the flow scope to the paginate tag. The paginate tag also contains an extra parameter in order to trigger the paginate event when the generated links are clicked.&lt;br/&gt;

&lt;pre name="code" class="xml"&gt;
&amp;lt;g:each in="${myDomainResults}" status="i" var="myDomain"&amp;gt;
    &amp;lt;g:form action="myFlow"&gt;
        &amp;lt;input name="id" value="${myDomain.id}" type="hidden"&amp;gt;
        URL: ${myDomain.url}
        &amp;lt;g:submitbutton name="selectItem" value="Select"/&amp;gt;
    &amp;lt;/g:form&gt;
&amp;lt;/g:each&gt;
&amp;lt;div class="paginateButtons"&amp;gt;
   &amp;lt;g:paginate max="9" offset="${myDomainOffset}" total="${totalMyDomains}" params="${[_eventId_paginate:true]}" /&amp;gt;
&amp;lt;/div&amp;gt;

&lt;/pre&gt;

You can also see I render each item as a separate form with a hidden id field and a submit button to trigger the 'selectItem' event and move onto the next state.&lt;br/&gt;
&lt;br/&gt;
I haven't tried messing with all the options for g:paginate to make sure they still work so please let me know if you find any problems with the above code.&lt;br/&gt;
&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-2512796383534398617?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/W-EendbMAiSCn2EMVcnk4VbN9bU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W-EendbMAiSCn2EMVcnk4VbN9bU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/W-EendbMAiSCn2EMVcnk4VbN9bU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/W-EendbMAiSCn2EMVcnk4VbN9bU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=Yt6B8O_BOuo:VVRT4RM3YAc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=Yt6B8O_BOuo:VVRT4RM3YAc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/Yt6B8O_BOuo/adding-pagination-to-grails-webflow.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><feedburner:origLink>http://www.leebutts.com/2009/06/adding-pagination-to-grails-webflow.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-4875257580394123047</guid><pubDate>Wed, 10 Jun 2009 14:29:00 +0000</pubDate><atom:updated>2009-06-11T00:30:42.932+10:00</atom:updated><title>Grails Amazon S3 Plugin 0.6 Released</title><description>Check out the &lt;a href="http://refactor.com.au/blog/grails-amazon-s3-plugin-06-released"&gt;Refactor blog&lt;/a&gt; for the details.
&lt;br/&gt;
&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-4875257580394123047?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LzMvcNIXFqW6Q6F1LwE2mfhhDQw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LzMvcNIXFqW6Q6F1LwE2mfhhDQw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LzMvcNIXFqW6Q6F1LwE2mfhhDQw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LzMvcNIXFqW6Q6F1LwE2mfhhDQw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=PKXlmD-uk3E:GWywQwxU688:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=PKXlmD-uk3E:GWywQwxU688:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/PKXlmD-uk3E/grails-amazon-s3-plugin-06-released.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/06/grails-amazon-s3-plugin-06-released.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-2531364845404528652</guid><pubDate>Thu, 21 May 2009 00:43:00 +0000</pubDate><atom:updated>2009-05-21T10:50:51.636+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">jsr186</category><category domain="http://www.blogger.com/atom/ns#">portlets</category><category domain="http://www.blogger.com/atom/ns#">jsr268</category><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">groovy</category><title>Grails JSR-186 Portlets Plugin Released</title><description>Kenji Nakamura has taken the reins of my initial work on the Grails Portlets plugin and done an awesome job of refactoring it into more manageable sub-plugins.&lt;br/&gt;
&lt;br/&gt;
You can now plug-in portal implementations with Pluto and Liferay supported initially.&lt;br/&gt;
&lt;br/&gt;
JSR-286 will be supported when the underlying version of Spring used by Grails is updated to Spring 3.0.&lt;br/&gt;
&lt;br/&gt;
Check it out at the Grails &lt;a href="http://grails.org/plugin/portlets"&gt;plugin portal&lt;/a&gt;.&lt;br/&gt;
&lt;br/&gt;
Great work Kenji!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-2531364845404528652?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GvWSDC5kLKUEdQAdU7a24HE0ROo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GvWSDC5kLKUEdQAdU7a24HE0ROo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GvWSDC5kLKUEdQAdU7a24HE0ROo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GvWSDC5kLKUEdQAdU7a24HE0ROo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=lmw4UhDhh9I:bsVudfOuJcw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=lmw4UhDhh9I:bsVudfOuJcw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/lmw4UhDhh9I/grails-jsr-186-portlets-plugin-released.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/05/grails-jsr-186-portlets-plugin-released.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-6509415911570117461</guid><pubDate>Wed, 06 May 2009 01:00:00 +0000</pubDate><atom:updated>2009-05-06T11:21:13.838+10:00</atom:updated><title>Grails Amazon S3 Plugin 0.5 Released</title><description>The latest version of the Amazon S3 plugin has been released which incorporates the latest jets3t snapshot library (0.7.1-SNAPSHOT) which has improved compatibility with the Eucalyptus open source EC2/S3 clone and some bug fixes.&lt;br/&gt;
&lt;br/&gt;
The plugin S3 event handling code was also updated to avoid stale object and optimistic locking exceptions being thrown by Hibernate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-6509415911570117461?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eHZsfomgTkMfcKJEyIYu7UBsfXA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eHZsfomgTkMfcKJEyIYu7UBsfXA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eHZsfomgTkMfcKJEyIYu7UBsfXA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eHZsfomgTkMfcKJEyIYu7UBsfXA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=hFhv07mLgtM:9w2IvUrpVd4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=hFhv07mLgtM:9w2IvUrpVd4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/hFhv07mLgtM/grails-amazon-s3-plugin-05-released.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/05/grails-amazon-s3-plugin-05-released.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-932613280779496621</guid><pubDate>Wed, 29 Apr 2009 23:43:00 +0000</pubDate><atom:updated>2009-04-30T10:21:11.677+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">plugins</category><category domain="http://www.blogger.com/atom/ns#">webtest</category><category domain="http://www.blogger.com/atom/ns#">grails</category><title>WebTest Plugin 1.1.4.2 Released</title><description>A new minor release of the Grails WebTest plugin to allow the plugin to download the latest WebTest snapshot (which uses HtmlUnit 2.5 which fixes issues with testing JQuery 1.3.2).&lt;br/&gt;
&lt;br/&gt;
It will download the latest snapshot by default when installed. If you would prefer the latest stable release (3.0) you can answer no when prompted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-932613280779496621?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8tAI-0Yoyy2gkGJY_sZlBt6Mnbs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8tAI-0Yoyy2gkGJY_sZlBt6Mnbs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8tAI-0Yoyy2gkGJY_sZlBt6Mnbs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8tAI-0Yoyy2gkGJY_sZlBt6Mnbs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=Mvcey8GNjYY:Rkn9_cBqqXs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=Mvcey8GNjYY:Rkn9_cBqqXs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/Mvcey8GNjYY/webtest-plugin-1142-released.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/04/webtest-plugin-1142-released.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-5247337825508295905</guid><pubDate>Wed, 29 Apr 2009 23:34:00 +0000</pubDate><atom:updated>2009-04-30T09:43:19.338+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">javascript</category><category domain="http://www.blogger.com/atom/ns#">webtest</category><category domain="http://www.blogger.com/atom/ns#">jquery</category><category domain="http://www.blogger.com/atom/ns#">grails</category><title>Testing a JQuery-UI Drag and Drop using WebTest</title><description>Just a quick post regarding using WebTest with JQuery-UI Draggable and Droppable.&lt;br/&gt;

The way that WebTest performs a drag and drop is as follows:
&lt;pre name="code" class="java"&gt;
from.mouseDown()
to.mouseOver()
to.mouseUp()
&lt;/pre&gt;

Note that there is no intermediate move events between mouse down on the thing you're dragging and mousing over the target element.&lt;br/&gt;

What this means is that you need to configure your Draggable to start dragging on mousedown without delay. You can do this by setting the distance and delay options to zero (delay is zero by default):
&lt;pre name="code" class="java"&gt;
$('.block').draggable({distance:0});
&lt;/pre&gt;
WebTest will now be able to click and drag it correctly. Unfortunately due to HtmlUnits 'renderless' behaviour you cannot specify exactly where you want to drop it so if you require precise targeting to properly test your application you're out of luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-5247337825508295905?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0htLmMnpR9m_1TFth9S5kNzOnI4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0htLmMnpR9m_1TFth9S5kNzOnI4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0htLmMnpR9m_1TFth9S5kNzOnI4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0htLmMnpR9m_1TFth9S5kNzOnI4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=pSGAQQ65a4Q:RtjEvJYOkHM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=pSGAQQ65a4Q:RtjEvJYOkHM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/pSGAQQ65a4Q/webtesting-jquery-ui-drag-and-drop.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/04/webtesting-jquery-ui-drag-and-drop.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-611841215921687424</guid><pubDate>Sat, 04 Apr 2009 01:47:00 +0000</pubDate><atom:updated>2009-04-04T11:56:21.741+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">webtest</category><category domain="http://www.blogger.com/atom/ns#">grails</category><title>Grails WebTest Plugin 1.1.4 Released</title><description>&lt;p&gt;
Another WebTest plugin release, this time with some new functionality!
&lt;/p&gt;

&lt;p&gt;Soenke Sothmann has contributed a nice patch to allow you to run custom suites of tests:
&lt;/p&gt;
&lt;pre&gt;
run-webtest -suite=MyTestSuite
&lt;/pre&gt;
&lt;p&gt;Note that under windows you will need to quote the -suite argument due to an issue with Gant's argument parsing e.g. "-suite=MyTestSuite"&lt;/p&gt;
&lt;pre name="code" class="java"&gt;
import grails.util.WebTest

class MyTestSuite extends WebTest {

    static void main(args) {
        new MyTestSuite().runTests(args)
    }

    void suite() {
        new SomeTest1(ant:ant).suite()
        new SomeTest2(ant:ant).suite()
        // You could also load up certain tests based on naming conventions or annotations
    }
}
&lt;/pre&gt;

&lt;p&gt;In addition to this patch, there were some bug fixes relating to running webtests under Hudson and also around setting a custom port when starting up the server.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-611841215921687424?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5yrgj70jO9haN5u0DoYBEzqjJ_U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5yrgj70jO9haN5u0DoYBEzqjJ_U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5yrgj70jO9haN5u0DoYBEzqjJ_U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5yrgj70jO9haN5u0DoYBEzqjJ_U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=VjE_vx2cz4E:ULH8IbDb428:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=VjE_vx2cz4E:ULH8IbDb428:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/VjE_vx2cz4E/grails-webtest-plugin-114-released.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/04/grails-webtest-plugin-114-released.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-169923244788074828</guid><pubDate>Wed, 01 Apr 2009 09:11:00 +0000</pubDate><atom:updated>2009-04-01T19:18:54.365+10:00</atom:updated><title>Comments</title><description>Apologies to those people who left me comments to which I hadn't replied. I thought I had email notification turned on - looks like I didn't! I've replied as best I could although some of the topics are well out of my recent memory :)&lt;br/&gt;

cheers&lt;br/&gt;

Lee&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-169923244788074828?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IvTaBIOXM8XD9MikK-YB_6Wzye4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IvTaBIOXM8XD9MikK-YB_6Wzye4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IvTaBIOXM8XD9MikK-YB_6Wzye4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IvTaBIOXM8XD9MikK-YB_6Wzye4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=2JwWG_oolMA:tt0uW7wiFKU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=2JwWG_oolMA:tt0uW7wiFKU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/2JwWG_oolMA/comments.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/04/comments.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-4802017834664207874</guid><pubDate>Tue, 31 Mar 2009 04:09:00 +0000</pubDate><atom:updated>2009-03-31T15:15:00.026+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">grails code example</category><title>Grails code example: Integration testing quartz job</title><description>&lt;p&gt;Here's a quick snippet to use to integration test a quartz job.&lt;/p&gt;
&lt;p&gt;I couldn't find a clear example after a quick Google so hopefully this is useful.&lt;/p&gt;
&lt;p&gt;There's a good chance that there's a better auto-magical way to get the job injected but I haven't poked through the testing code to work it out :) &lt;/p&gt;
&lt;pre name="code" class="java"&gt;
package au.com.refactor

class TempCleanerJobTests extends GrailsUnitTestCase {

  def tempCleanerJob
  def grailsApplication

  protected void setUp() {
    super.setUp()
    tempCleanerJob = grailsApplication.mainContext.getBean('au.com.refactor.TempCleanerJob')
  }

  protected void tearDown() {
    super.tearDown()
  }

  void testCleanNothing() {
    tempCleanerJob.execute()
  }

}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-4802017834664207874?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xVeTc6pf9Y2sauuFeB7PEfDwGeU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xVeTc6pf9Y2sauuFeB7PEfDwGeU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xVeTc6pf9Y2sauuFeB7PEfDwGeU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xVeTc6pf9Y2sauuFeB7PEfDwGeU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=nlJDbBQ3mxY:1X3vLOWzpvQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=nlJDbBQ3mxY:1X3vLOWzpvQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/nlJDbBQ3mxY/code-example-integration-testing-quartz.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/03/code-example-integration-testing-quartz.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-1568718303798736439</guid><pubDate>Mon, 30 Mar 2009 07:07:00 +0000</pubDate><atom:updated>2009-03-30T17:14:57.423+10:00</atom:updated><title>Grails WebTest Plugin 1.1.2 Released</title><description>I've just released the latest version of the WebTest plugin for Grails. This was an update to fix a couple of issues with interactive mode use and parameter parsing and to de-couple the WebTest  distribution zip.

&lt;span style="font-weight: bold;"&gt;Highlights&lt;/span&gt;
&lt;ul&gt;&lt;li&gt;run-webtest now supports -headless to stop the Swing progress gui being shown during test runs (this was previously possible via system properties, this is just a tidy up)&lt;/li&gt;&lt;li&gt;install-plugin webtest will now prompt you to download WebTest (currently version 3). It installs it into your .grails directory by default or you can answer 'n' and manually set the install location via webtest/conf/webtest.properties using wt.config.home
&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-1568718303798736439?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E7Lln1_Nj5C7K4mntiwX7M10BNc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E7Lln1_Nj5C7K4mntiwX7M10BNc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E7Lln1_Nj5C7K4mntiwX7M10BNc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E7Lln1_Nj5C7K4mntiwX7M10BNc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=H_jREzm4mik:62aOtxGPCfM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=H_jREzm4mik:62aOtxGPCfM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/H_jREzm4mik/grails-webtest-plugin-112-released.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://www.leebutts.com/2009/03/grails-webtest-plugin-112-released.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-7335619484986563023</guid><pubDate>Tue, 24 Feb 2009 12:58:00 +0000</pubDate><atom:updated>2009-02-24T23:01:10.051+10:00</atom:updated><title>Grails WebTest Plugin 1.1.1 Released</title><description>I've released an updated version of the WebTest plugin which is compatible with Grails 1.1.&lt;br/&gt;
It also has the latest WebTest release and a couple of small bug fixes.&lt;br/&gt;
If you are on 1.0.x DO NOT UPGRADE, stay with 0.6.&lt;br/&gt;
It can be installed via:&lt;br/&gt;
&lt;pre&gt;grails install-plugin webtest&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-7335619484986563023?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RHEdgIgBP2JGip_eHG6H4QQQhBg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RHEdgIgBP2JGip_eHG6H4QQQhBg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RHEdgIgBP2JGip_eHG6H4QQQhBg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RHEdgIgBP2JGip_eHG6H4QQQhBg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=bonnmtCutHo:7NcVL_eorXM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=bonnmtCutHo:7NcVL_eorXM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/bonnmtCutHo/grails-webtest-plugin-111-released.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2009/02/grails-webtest-plugin-111-released.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-5895316999467686936</guid><pubDate>Sat, 31 Jan 2009 02:26:00 +0000</pubDate><atom:updated>2009-01-31T13:11:51.172+10:00</atom:updated><title>Grails WebTest Plugin 0.6 Released</title><description>&lt;p&gt;The latest version of the Webtest Plugin has been released for Grails 1.0.4. A release for 1.1 will follow shortly, with a newer WebTest snapshot which is now Java 5 dependent.
&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Release Notes&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;setUp/tearDown at the method and class level&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt; classSetUp() and classTearDown() are run as individual test cases. SetUp() and tearDown() are run as the first and last steps of each test case.&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Superclass changes in WebTest&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;The WebTest superclass now automatically runs all methods starting with test. This saves you having to manually maintain the suite method unless you really want to for test order reasons.&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;WebTest will also generate the test case name from the class and method name removing the need for repetitive  webtest('blah'){...} code. The generated test name also makes it much easir to find the failing test from the generate reports.&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;MethodMissing code has been added so you can refactor a group of steps without having to wrap them in and ant.group closure.&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;You can now call config() as the first step in your test method to set WebTest options like host, port and ajax support&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;-nostart option allows you to runthe tests against a server that is already running. It should come after run-webtest on the command line&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;System parameters now passed through to WebTest. They need to be placed directly after grails on the command line e.g. grails -Dwt.headless=true run-webtest&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;-Dwt.headless=true to hide Swing monitor and stop browser launching&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;-Dserver.port=XXXX to get the tests to run against a server on a non-default port&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;The plugin has been updated with a recent snapshot version of WebTest which includes an update of HtmlUnit to version 2.3&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Application lib folder now on WebTest classpath. This avoids the need to duplicate/move libraries into webtest/home/lib&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Custom steps&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;You can now extend com.canoo.webtest.steps.Step by placing groovy classes in webtest/tests/step. They will be automatically loaded at runtime and allow for easy testing of complicated scenarios such as JSON interfaces and email integration&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;The last project I worked on  used these custom steps to start, check then stop an embedded  Wiser SMTP server for testing email functionality.&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Upgrade Instructions&lt;/b&gt;&lt;/span&gt;
&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-weight: bold;"&gt;delete plugins/webtest-0.x
&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;svn delete webtest/home, commit&lt;/span&gt;.
&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;This avoids svn issues as the install script deletes the folder and
extracts the latest build over the top, removing the .svn directories
&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-weight: bold;"&gt;grails install-plugin webtest&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-5895316999467686936?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/rddATaRsxA-yBAEzP6yoIPkdCK0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rddATaRsxA-yBAEzP6yoIPkdCK0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/rddATaRsxA-yBAEzP6yoIPkdCK0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/rddATaRsxA-yBAEzP6yoIPkdCK0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=juBaBFNihuw:axsMAYxCheo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=juBaBFNihuw:axsMAYxCheo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/juBaBFNihuw/grails-webtest-plugin-06-released.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><feedburner:origLink>http://www.leebutts.com/2009/01/grails-webtest-plugin-06-released.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-993051551451772880</guid><pubDate>Fri, 05 Dec 2008 01:56:00 +0000</pubDate><atom:updated>2008-12-05T12:35:29.557+10:00</atom:updated><title>Spouse 2.0 - December 12</title><description>A great idea inspired by a colleague of mine (&lt;a href="http://dpn.name/"&gt;dpn&lt;/a&gt;)

&lt;a href="http://www.spouse2.com/"&gt;http://www.spouse2.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-993051551451772880?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/681rSy4EVD9DhRmvrsZhmSwZvzQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/681rSy4EVD9DhRmvrsZhmSwZvzQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/681rSy4EVD9DhRmvrsZhmSwZvzQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/681rSy4EVD9DhRmvrsZhmSwZvzQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=vbrD2C7cCxg:qtxbYDD8Hjs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=vbrD2C7cCxg:qtxbYDD8Hjs:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/vbrD2C7cCxg/spouse-20-december-12.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2008/12/spouse-20-december-12.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-597818267092854965</guid><pubDate>Thu, 04 Dec 2008 21:44:00 +0000</pubDate><atom:updated>2008-12-05T15:16:51.364+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">sydney</category><category domain="http://www.blogger.com/atom/ns#">australia</category><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">groovy</category><title>Sydney Groovy/Grails User Group</title><description>In between meeting all the interesting folk at &lt;a href="http://osdcsydney.info/2008/index.html"&gt;OSDC&lt;/a&gt;, I attended the &lt;a href="http://groups.google.com/group/groovy-sydney"&gt;Sydney Groovy (and Grails) User Group&lt;/a&gt;. I presented a short talk on the new features in Grails 1.1 then demoed the Portlets Plugin and new features in the WebTest Plugin 0.6. &lt;a href="http://www.orbitec.com.au"&gt;Dave Peterson&lt;/a&gt; then gave a great Intro to Gant talk with comparisons to buildr. Come along next time to hear more from Dave about Gradle :)

The group is organsied by &lt;a href="http://ca.rroll.net/"&gt;Nick Carrol&lt;/a&gt; from Thoughtworks and the venue (in The Rocks near Sydney harbour) was great. If you're ever in the area, get onto the mailing list and see when the next meeting is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-597818267092854965?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8uwyozuV1Dzmr9cs085PrfiLPJY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8uwyozuV1Dzmr9cs085PrfiLPJY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8uwyozuV1Dzmr9cs085PrfiLPJY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8uwyozuV1Dzmr9cs085PrfiLPJY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=0YogvEa1kC0:cYlwWy9xUTI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=0YogvEa1kC0:cYlwWy9xUTI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/0YogvEa1kC0/sydney-groovygrails-user-group.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><feedburner:origLink>http://www.leebutts.com/2008/12/sydney-groovygrails-user-group.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-7128993135986283052</guid><pubDate>Mon, 10 Nov 2008 04:46:00 +0000</pubDate><atom:updated>2008-12-24T12:18:02.944+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">webtest</category><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">groovy</category><title>Grails WebTest Plugin 0.6 alpha</title><description>&lt;p&gt;I've been working on committing some improvements to the Grails &lt;a href="http://grails.org/funtional+testing"&gt;WebTest Plugin&lt;/a&gt;.  You can download the alpha version &lt;a href="http://refactor.com.au/grails-webtest-0.6.zip"&gt;here &lt;/a&gt;(I haven't yet released it to the plugin repository). I'd appreciate feedback from users with existing applications with non-trivial webtests regarding any regressions or upgrade issues they have. If all looks ok I will update the official repository version shortly.
&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Release Notes&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;setUp/tearDown at the method and class level&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt; classSetUp() and classTearDown() are run as individual test cases. SetUp() and tearDown() are run as the first and last steps of each test case.&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;New superclass AutoWebTest&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;This new superclass will automatically run all methods starting with test. This saves you having to manually maintain the suite method unless you really want to for test order reasons.&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;AutoWebTest will also generate the test case name from the class and method name removing the need for repetitive  webtest('blah'){...} code. The generated test name also makes it much easir to find the failing test from the generate reports.&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;MethodMissing code has been added so you can refactor a group of steps without having to wrap them in and ant.group closure.&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;You can now call config() as the first step in your test method to set WebTest options like host, port and ajax support&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;-nostart option allows you to runthe tests against a server that is already running. It should come after run-webtest on the command line&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;System parameters now passed through to WebTest. They need to be placed directly after grails on the command line e.g. grails -Dwt.headless=true run-webtest&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;-Dwt.headless=true to hide Swing monitor and stop browser launching&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;-Dserver.port=XXXX to get the tests to run against a server on a non-default port&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;The plugin has been updated with the latest WebTest release which includes an update of HtmlUnit to version 2.3&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Application lib folder now on WebTest classpath. This avoids the need to duplicate/move libraries into webtest/home/lib&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;Custom steps&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;You can now extend com.canoo.webtest.steps.Step by placing groovy classes in webtest/tests/step. They will be automatically loaded at runtime and allow for easy testing of complicated scenarios such as JSON interfaces and email integration&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;p style="margin-bottom: 0cm;"&gt;The last project I worked on  used these custom steps to start, check then stop an embedded  Wiser SMTP server for testing email functionality.&lt;/p&gt;
&lt;/li&gt;&lt;/ul&gt;
&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:130%;"&gt;&lt;b&gt;Upgrade Instructions&lt;/b&gt;&lt;/span&gt;
&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-weight: bold;"&gt;delete plugins/webtest-0.x
&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-weight: bold;"&gt;svn delete webtest/home, commit&lt;/span&gt;.
&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;This avoids svn issues as the install script deletes the folder and
extracts the latest build over the top, removing the .svn directories
&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-weight: bold;"&gt;grails install-plugin grails-webtest-0.6.zip&lt;/p&gt;&lt;p style="margin-bottom: 0cm; font-weight: bold;"&gt;&lt;span style="font-weight: normal;"&gt;You need to copy the zip file into the root folder of your project and run the command there.&lt;/span&gt;
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-7128993135986283052?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tX7Vp5u06ANKGmYBUO6ACn7m3xE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tX7Vp5u06ANKGmYBUO6ACn7m3xE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tX7Vp5u06ANKGmYBUO6ACn7m3xE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tX7Vp5u06ANKGmYBUO6ACn7m3xE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=0HFhisJA5oU:6xFZq6vN1l8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=0HFhisJA5oU:6xFZq6vN1l8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/0HFhisJA5oU/grails-webtest-plugin-06-alpha.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">5</thr:total><feedburner:origLink>http://www.leebutts.com/2008/11/grails-webtest-plugin-06-alpha.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-2429513110042332986</guid><pubDate>Thu, 30 Oct 2008 01:30:00 +0000</pubDate><atom:updated>2008-10-30T11:37:26.080+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">open source</category><category domain="http://www.blogger.com/atom/ns#">java</category><category domain="http://www.blogger.com/atom/ns#">australia</category><category domain="http://www.blogger.com/atom/ns#">osdc</category><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">groovy</category><title>Open Source Developers Conference - Sydney Dec 2008</title><description>Myself and colleagues from &lt;a href="http://www.refactor.com.au"&gt;Refactor&lt;/a&gt; will be attending the &lt;a href="http://osdc.com.au/2008/index.html"&gt;Open Source Developers Conference (OSDC)&lt;/a&gt; in Sydney from 2-5 Dec. It's a great conference to get in touch with developers who use and contribute to open source and find out what's on the horizon.

I didn't get organised early enough to present any main sessions on Grails but am keen to do some lightening talks about it and also demo &lt;a href="http://www.balsamiq.com/products/mockups"&gt;Balsamiq MockUps&lt;/a&gt; which I came across a few weeks ago. I think it's a great tool for agile BA's and product owners to really get their customers engaged.

If you see me there, make sure you come over and say hi!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-2429513110042332986?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5gKJoTse8T5TKdVHAMSwIr3QE48/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5gKJoTse8T5TKdVHAMSwIr3QE48/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5gKJoTse8T5TKdVHAMSwIr3QE48/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5gKJoTse8T5TKdVHAMSwIr3QE48/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=ujnq_b05uHw:PWS3klJea4A:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=ujnq_b05uHw:PWS3klJea4A:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/ujnq_b05uHw/open-source-developers-conference.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2008/10/open-source-developers-conference.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-1589663943653194005</guid><pubDate>Tue, 16 Sep 2008 23:57:00 +0000</pubDate><atom:updated>2008-10-30T11:49:08.515+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">SSL</category><category domain="http://www.blogger.com/atom/ns#">webtest</category><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">groovy</category><title>How to WebTest a site using an invalid SSL certificate</title><description>&lt;p&gt;A very short post regarding an issue I recently came across while testing an application I'm working on.&lt;/p&gt;
&lt;p&gt;My application needs to interface with and existing PHP application that uses SSL. To acceptance test this functionality I am writing a WebTest that drives both applications to assert information is flowing correctly between them.&lt;/p&gt;
&lt;p&gt;Unfortunately the test instance of the PHP application I have been given to use has a self-signed SSL certificate which causes WebTest to fail with a SSLHandshakeException.&lt;/p&gt;
&lt;p&gt;To ignore the self signed certificate, add the following line to your test:&lt;/p&gt;
&lt;pre&gt;groovy('step.context.currentWebClientContext.webClient.useInsecureSSL = true')&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-1589663943653194005?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_wwqeb8vtrH96jDIIFEftxCxToM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_wwqeb8vtrH96jDIIFEftxCxToM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_wwqeb8vtrH96jDIIFEftxCxToM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_wwqeb8vtrH96jDIIFEftxCxToM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=spbFzPik_vs:VrG3kcFd3xo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=spbFzPik_vs:VrG3kcFd3xo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/spbFzPik_vs/how-to-webtest-site-using-invalid-ssl.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2008/09/how-to-webtest-site-using-invalid-ssl.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-1633202991328756910</guid><pubDate>Tue, 26 Aug 2008 00:45:00 +0000</pubDate><atom:updated>2008-08-26T10:51:29.631+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">quartz</category><category domain="http://www.blogger.com/atom/ns#">grails</category><category domain="http://www.blogger.com/atom/ns#">jsecurity</category><title>Having trouble installing the Quartz plugin? Read on...</title><description>For those of you who don't follow the grails-users list, I thought I'd post a quick solution to solving an odd-looking compile error when installing the Quartz plugin into a Grails application that also uses the JSecurity plugin.
&lt;/br&gt;
The compile error you will see is:
&lt;pre&gt;
GrailsJobFactory.java:75: cannot find symbol
symbol  : constructor JobExecutionException(java.lang.String,java.lang.Exception)
location: class org.quartz.JobExecutionException
    throw new JobExecutionException(e.getMessage(), e);
&lt;/pre&gt;
It's caused by a library clash between the two plugins as JSecurity also ships with quartz.jar. Luckily (according to Les from the JSecurity project), JSecurity doesn't actually rely on that jar so you can delete it from plugins/jsecurity-x.x/lib which will solve the compile issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-1633202991328756910?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/pH_vPtfE3ZiaxDG0yXWV13cqnus/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pH_vPtfE3ZiaxDG0yXWV13cqnus/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/pH_vPtfE3ZiaxDG0yXWV13cqnus/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/pH_vPtfE3ZiaxDG0yXWV13cqnus/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=QlxzId9WfIY:nuCqcgTFdts:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=QlxzId9WfIY:nuCqcgTFdts:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/QlxzId9WfIY/having-trouble-installing-quartz-plugin.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2008/08/having-trouble-installing-quartz-plugin.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-7002526042602095565</guid><pubDate>Mon, 18 Aug 2008 06:03:00 +0000</pubDate><atom:updated>2008-08-18T16:25:18.709+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">hillclimb</category><category domain="http://www.blogger.com/atom/ns#">VR-4</category><category domain="http://www.blogger.com/atom/ns#">ozvr4</category><category domain="http://www.blogger.com/atom/ns#">EvoOz</category><category domain="http://www.blogger.com/atom/ns#">Evo</category><category domain="http://www.blogger.com/atom/ns#">legnum</category><title>Grafton Hillclimb</title><description>&lt;div style="text-align: justify;"&gt;I attended the Grafton Sporting Car Club's hillclimb on the weekend for the first time. It was loads of fun, and the first time I had my car out on a track. I managed to get under 60 seconds which was my goal for the day but hope to be a lot closer to the Evo's next time. I headed down with some top blokes from EvoOz and made a weekend of it.

I can't wait to go back with improved suspension and tires, I just need to develop the business case in order to get it past the Minister for Finance. I think I'll try the improved safety angle...

You can see how tight and technical the track is below.
&lt;/div&gt;

&lt;iframe width="510" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=-29.587330,+152.927585&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;s=AARTsJpNtuyOulEJ7bquXNqWlstm6p8BHg&amp;amp;ll=-29.587330,+152.927585&amp;amp;spn=0.026126,0.043774&amp;amp;z=17&amp;amp;output=embed"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://maps.google.com/maps?f=q&amp;amp;hl=en&amp;amp;geocode=&amp;amp;q=-29.587330,+152.927585&amp;amp;ie=UTF8&amp;amp;t=h&amp;amp;ll=-29.587330,+152.927585&amp;amp;spn=0.026126,0.043774&amp;amp;z=17&amp;amp;source=embed" style="color:#0000FF;text-align:left"&gt;View Larger Map&lt;/a&gt;&lt;/small&gt;

&lt;div style="text-align: justify;"&gt;
This is a shot taken by Nigel from &lt;a href="http://www.uniqueimages.com.au"&gt;Unique Images&lt;/a&gt;. Thanks a lot Nigel!
&lt;/div&gt;
&lt;img src="http://i3.photobucket.com/albums/y58/leebutts/OZVR4/grafton-aug08/IMG_2663-small.jpg" alt="Photobucket - Video and Image Hosting"&gt;&lt;br&gt;&lt;br&gt;

&lt;div style="text-align: justify;"&gt;
I feature at around 2:30 and 7:00 in the below video - great camera work/commentary by 'Pres' from EvoOz.
&lt;/div&gt;

&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Ze5dQz9NP2k&amp;hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Ze5dQz9NP2k&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-7002526042602095565?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ebwtgx3Gx9azZZcbTwZYh9v8iLE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ebwtgx3Gx9azZZcbTwZYh9v8iLE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ebwtgx3Gx9azZZcbTwZYh9v8iLE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ebwtgx3Gx9azZZcbTwZYh9v8iLE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=7ni3dUfpIpU:FabPxEdibYQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=7ni3dUfpIpU:FabPxEdibYQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/7ni3dUfpIpU/grafton-hillclimb.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://www.leebutts.com/2008/08/grafton-hillclimb.html</feedburner:origLink></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-8662705757379383704.post-550257163540306967</guid><pubDate>Tue, 05 Aug 2008 02:15:00 +0000</pubDate><atom:updated>2008-09-28T20:16:27.041+10:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">jasper reports</category><category domain="http://www.blogger.com/atom/ns#">grails</category><title>Jasper Reports Grails Plugin - sub-reports</title><description>Here's something that tripped me up when developing my first JasperReport containing a sub-report for use with the JasperReport grails plugin.

In order for the sub-report to resolve correctly you need to add a parameter to your parent report called SUBREPORT_DIR. This is then set by the JR plugin, and makes everything work as expected.

When specifying the sub-report location, set it to
&lt;pre&gt;
$P{SUBREPORT_DIR}  + "mysubreport.jasper"
&lt;/pre&gt;

(assuming your subreport is in the same directory as the parent report and called mysubreport.jasper)

Don't forget to give the parameter a default value of empty string so that it still works when previewing in iReport.

You also need to remember that the plugin runs the compiled versions (*.jasper not *.jrxml) so you need to compile the reports with iReport before running the application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8662705757379383704-550257163540306967?l=www.leebutts.com'/&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/v2QYW3dUfKmDvOOM7xhHI3AfMFY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v2QYW3dUfKmDvOOM7xhHI3AfMFY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/v2QYW3dUfKmDvOOM7xhHI3AfMFY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/v2QYW3dUfKmDvOOM7xhHI3AfMFY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=RRQI6_K1tPw:cZE9nTM9Yb8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/CarsNCode?a=RRQI6_K1tPw:cZE9nTM9Yb8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/CarsNCode?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://feedproxy.google.com/~r/CarsNCode/~3/RRQI6_K1tPw/jasper-reports-grails-plugin-sub.html</link><author>noreply@blogger.com (Lee Butts)</author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total><feedburner:origLink>http://www.leebutts.com/2008/08/jasper-reports-grails-plugin-sub.html</feedburner:origLink></item></channel></rss>
