<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Java Thinking &#187; Web</title>
	<atom:link href="http://www.javathinking.com/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.javathinking.com</link>
	<description>Java and software development related thoughts</description>
	<lastBuildDate>Thu, 02 Feb 2012 12:16:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Rapache on Ubuntu 9.10</title>
		<link>http://www.javathinking.com/2009/11/rapache-on-ubuntu-910/</link>
		<comments>http://www.javathinking.com/2009/11/rapache-on-ubuntu-910/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 05:02:24 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[rapache]]></category>

		<guid isPermaLink="false">http://www.javathinking.com/?p=408</guid>
		<description><![CDATA[I&#8217;ve just now stumbled across Rapache, a useful GUI tool that makes configuring apache easy. I found it by accident in the Ubuntu Software Center, but unfortunately it would freeze while trying to add a new domain. I searched the web for answers, and found a bug report.
This didn&#8217;t specifically reference Ubuntu 9.10 (rather, 9.04) [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;ve just now stumbled across <a href="https://launchpad.net/rapache">Rapache</a>, a useful GUI tool that makes configuring apache easy. I found it by accident in the Ubuntu Software Center, but unfortunately it would freeze while trying to add a new domain. I searched the web for answers, and found a <a href="https://bugs.launchpad.net/rapache/+bug/346788">bug report</a>.</p>
<p>This didn&#8217;t specifically reference Ubuntu 9.10 (rather, 9.04) and the file that needed to be patched didn&#8217;t exist in the given location.</p>
<p>I found it easily enough:</p>
<pre>
paul@paul-laptop:~$ sudo find / -name RapacheGui.py[sudo] password for paul:
/usr/lib/pymodules/python2.5/RapacheGtk/RapacheGui.py
/usr/lib/pymodules/python2.6/RapacheGtk/RapacheGui.py
/usr/share/pyshared/RapacheGtk/RapacheGui.py
paul@paul-laptop:~$
</pre>
<p>I edited the last one (/usr/share/pyshared/RapacheGtk/RapacheGui.py) as documented in <a href="https://bugs.launchpad.net/rapache/+bug/346788/comments/23">comment 23</a> to add the following at line 79:</p>
<pre>
        if not Shell.command.ask_password(): sys.exit(1)
</pre>
<p>Note, this line MUST be preceeded by 8 spaces &#8211; indentation is important in Python.</p>
<p>Now, rapache would prompt for the system password and then close! </p>
<p>I&#8217;ve got it working now, by starting it with sudo:</p>
<pre>
sudo rapache
</pre>
<p>Everything seems to work. I&#8217;ve added a domain, turned on the <a href="http://httpd.apache.org/docs/2.2/mod/mod_include.html">include module</a>, and added &#8220;AddOutputFilter INCLUDES .html&#8221; to the virtual host definition &#8211; all very quickly using rapache. </p>
<p>So, server side includes now work on my new virtual host &#8211; which is what I started out wanting to do before going off on this tangent.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javathinking.com/2009/11/rapache-on-ubuntu-910/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Just for a bit of fun&#8230; whohasmorefollowers.com</title>
		<link>http://www.javathinking.com/2009/05/just-for-a-bit-of-fun-whohasmorefollowerscom/</link>
		<comments>http://www.javathinking.com/2009/05/just-for-a-bit-of-fun-whohasmorefollowerscom/#comments</comments>
		<pubDate>Mon, 04 May 2009 02:12:55 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.javathinking.com/?p=316</guid>
		<description><![CDATA[Recently I jumped on the Twitter bandwagon and created whohasmorefollowers.com &#8211; a simple service that lets you compare the number of followers for 2 Twitter users.
This weekend I added a game feature to it &#8211; the player is presented with 2 random twitter users (from the top 50) and is challenged to guess which user [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Recently I jumped on the <a href="http://twitter.com">Twitter</a> bandwagon and created <a href="http://www.whohasmorefollowers.com/">whohasmorefollowers.com</a> &#8211; a simple service that lets you compare the number of followers for 2 Twitter users.</p>
<p>This weekend I added a <a href="http://www.whohasmorefollowers.com/game">game</a> feature to it &#8211; the player is presented with 2 random twitter users (from the top 50) and is challenged to guess which user has the most followers. It makes you think, and the results can surprise you!</p>
<p>Why build such a thing? Well, just for a bit of fun really. But it was also a good excuse to familiarise myself with:</p>
<ol>
<li><a href="http://jquery.com/">jquery</a></li>
<li>jquery plugins (<a href="http://plugins.jquery.com/project/jquerytemplate">jquery.template</a>)</li>
<li><a href="http://www.blueprintcss.org/">blueprint</a> css framework</li>
</ol>
<p>Another added benefit was with having such a simple application was that the whole exercise fitted into a very short <a href="http://www.davecheong.com/2006/07/26/time-boxing-is-an-effective-getting-things-done-strategy/">timebox</a>. The exposure to these frameworks made it worthwhile doing, and it reminded me how painful IE can be.</p>
<p>If you&#8217;re interested, <a href="http://www.whohasmorefollowers.com/game">play the game</a> and tweet your score!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javathinking.com/2009/05/just-for-a-bit-of-fun-whohasmorefollowerscom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Redirecting javathinking.com to www.javathinking.com</title>
		<link>http://www.javathinking.com/2009/04/redirecting-javathinkingcom-to-wwwjavathinkingcom/</link>
		<comments>http://www.javathinking.com/2009/04/redirecting-javathinkingcom-to-wwwjavathinkingcom/#comments</comments>
		<pubDate>Fri, 17 Apr 2009 12:00:57 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[httpd]]></category>

		<guid isPermaLink="false">http://www.javathinking.com/?p=314</guid>
		<description><![CDATA[I thought it would be a good idea to redirect requests to http://javathinking.com to http://www.javathinking.com and I found out how to do that easily here.
Basically I just needed to add the apache directives:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^javathinking.com
RewriteRule ^(.*)$ http://www.javathinking.com$1 [R=permanent,L]
In ISPConfig this can be done easily through the administration console rather than editing the apache config [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I thought it would be a good idea to redirect requests to http://javathinking.com to http://www.javathinking.com and I found out how to do that easily here.</p>
<p>Basically I just needed to add the <a href="http://httpd.apache.org/">apache</a> directives:</p>
<blockquote><p>RewriteEngine on<br />
RewriteCond %{HTTP_HOST} ^javathinking.com<br />
RewriteRule ^(.*)$ http://www.javathinking.com$1 [R=permanent,L]</p></blockquote>
<p>In <a href="http://ispconfig.org/">ISPConfig</a> this can be done easily through the administration console rather than editing the apache config files.</p>
<p><a href="http://getfirebug.com/">Firebug</a> shows me that I am now getting a 301 redirect when accessing http://javathinking.com.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javathinking.com/2009/04/redirecting-javathinkingcom-to-wwwjavathinkingcom/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>grails-selenium-0.5</title>
		<link>http://www.javathinking.com/2008/09/grails-selenium-05/</link>
		<comments>http://www.javathinking.com/2008/09/grails-selenium-05/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 12:16:23 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[selenium]]></category>

		<guid isPermaLink="false">http://www.javathinking.com/?p=104</guid>
		<description><![CDATA[I&#8217;ve just released a new version (0.5) of the selenium plugin, which fixes compatibility problems with Grails 1.0.3. Hopefully all is well now and I&#8217;d like to apologise to all the users out there who ran into problems. If you encounter any more issues, you can email me at paul@javathinking.com.
On another note, it would be [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;ve just released a new version (0.5) of the <a href="http://www.grails.org/Selenium+plugin" target="_blank">selenium plugin</a>, which fixes compatibility problems with Grails 1.0.3. Hopefully all is well now and I&#8217;d like to apologise to all the users out there who ran into problems. If you encounter any more issues, you can email me at paul@javathinking.com.</p>
<p>On another note, it would be cool to know how much a plugin is being used. For example, I&#8217;ve got no way of knowing if anyones actually using any of the plugins I&#8217;ve written so its hard to prioritise work. Perhaps we need a download counter to give a rough indication&#8230; ?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javathinking.com/2008/09/grails-selenium-05/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>No Dialect mapping for JDBC type: -1</title>
		<link>http://www.javathinking.com/2008/04/no-dialect-mapping-for-jdbc-type-1/</link>
		<comments>http://www.javathinking.com/2008/04/no-dialect-mapping-for-jdbc-type-1/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 12:50:54 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[hibernate]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://www.javathinking.com/?p=85</guid>
		<description><![CDATA[This Hibernate error came at me out of the blue while working on FilmSuggestions.com &#8211; I innocently added a constraint to one of my Grails domain models, setting the maxSize of one of the fields to 2000. This changed the table schema making the column type TEXT instead of VARCHAR.
The problem came from a native [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>This Hibernate error came at me out of the blue while working on FilmSuggestions.com &#8211; I innocently added a constraint to one of my Grails domain models, setting the maxSize of one of the fields to 2000. This changed the table schema making the column type TEXT instead of VARCHAR.</p>
<p>The problem came from a native query:</p>
<blockquote><p>sessionFactory.getCurrentSession().createSQLQuery(mostPopularFilmsSQL).list()</p></blockquote>
<p>This selects the TEXT column which results in the error (as described <a href="http://forum.hibernate.org/viewtopic.php?p=2366178" target="_blank">here</a>). Setting the dialect didn&#8217;t seem to make any difference, so for now I&#8217;ve changed the constraint so it&#8217;s back to being a VARCHAR.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javathinking.com/2008/04/no-dialect-mapping-for-jdbc-type-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Wordpress error &#8211; Allowed memory size of ## bytes exhausted</title>
		<link>http://www.javathinking.com/2008/04/wordpress-error-allowed-memory-size-of-bytes-exhausted/</link>
		<comments>http://www.javathinking.com/2008/04/wordpress-error-allowed-memory-size-of-bytes-exhausted/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 07:56:44 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.javathinking.com/?p=82</guid>
		<description><![CDATA[I just came across a problem using wordpress that stopped everything working &#8211; any request to the Wordpress site resulted in a blank page. In the log file for the host, I could see:
PHP Fatal error:Â  Allowed memory size of 8388608 bytes exhausted (tried to allocate 14592 bytes) in &#60;path to a plugin php file&#62;
Removing [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I just came across a problem using wordpress that stopped everything working &#8211; any request to the Wordpress site resulted in a blank page. In the log file for the host, I could see:</p>
<blockquote><p>PHP Fatal error:Â  Allowed memory size of 8388608 bytes exhausted (tried to allocate 14592 bytes) in &lt;path to a plugin php file&gt;</p></blockquote>
<p>Removing the plugin specified just meant that the error was reported for the next plugin.</p>
<p>Searching <a href="http://www.google.co.nz/search?q=wordpress+Allowed+memory+size+of+bytes+exhausted" target="_blank">Google</a> showed many discussions about this problem. Luckily the solution for me was easy enough &#8211; as described in this <a href="http://wordpress.org/support/topic/133676" target="_blank">topic</a>:</p>
<blockquote><p>In &lt;wordpress root&gt;/wp-includes/cache.php I just added:</p>
<blockquote>
<pre><code>ini_set("memory_limit","12M");</code></pre>
</blockquote>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.javathinking.com/2008/04/wordpress-error-allowed-memory-size-of-bytes-exhausted/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>grails-selenium-0.4</title>
		<link>http://www.javathinking.com/2008/03/grails-selenium-04/</link>
		<comments>http://www.javathinking.com/2008/03/grails-selenium-04/#comments</comments>
		<pubDate>Fri, 21 Mar 2008 10:55:49 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.javathinking.com/?p=81</guid>
		<description><![CDATA[This information is out of date &#8211; please see http://www.grails.org/Selenium+plugin
Version 0.4 of the grails selenium plugin is now available.
This version adds:

scripts to create and run tests
a postResults url for displaying the final test results

Details are as follows:
run-selenium
Runs Selenium in the specified browser.
Specify the path to your browser as a command line parameter i.e.
grails run-selenium /usr/bin/firefox
or, [...]]]></description>
			<content:encoded><![CDATA[<p></p><blockquote><p>This information is out of date &#8211; please see <a href="http://www.grails.org/Selenium+plugin">http://www.grails.org/Selenium+plugin</a></p></blockquote>
<p>Version 0.4 of the grails selenium plugin is now available.</p>
<p>This version adds:</p>
<ul>
<li>scripts to create and run tests</li>
<li>a postResults url for displaying the final test results</li>
</ul>
<p>Details are as follows:</p>
<p><strong>run-selenium</strong><br />
Runs Selenium in the specified browser.<br />
Specify the path to your browser as a command line parameter i.e.</p>
<blockquote><p>grails run-selenium /usr/bin/firefox</p></blockquote>
<p>or, if the executable is on the path you would just need</p>
<blockquote><p>grails run-selenium firefox</p></blockquote>
<p>In your application.properties, you can specify:</p>
<blockquote><p>selenium.auto=true<br />
selenium.close=true<br />
selenium.multiWindow=true<br />
selenium.highlight=true<br />
selenium.resultsUrl=/your/url/here (defaults to ${appContext}/selenium/postResults)<br />
selenium.runInterval=1000<br />
selenium.baseUrl=</p></blockquote>
<p>See http://selenium.openqa.org/installing.html (section titled Continuous Integration) for more information on selenium and continuous integration.<br />
<strong>create-selenium-test</strong><br />
Generates a new empty selenium test.</p>
<p>Supply the path of the test you want to create, relative to &#8216;web-app/selenium/tests&#8217;. The extension of this must be one of html, psv, gsp. The test file will be created using the syntax based on the file extension.</p>
<p>Example use:</p>
<blockquote><p>grails create-selenium-test registration/errors/InvalidUsername.gsp</p></blockquote>
<p>creates</p>
<blockquote><p>web-app/selenium/tests/registration/errors/InvalidUsername.gsp</p></blockquote>
<p><strong>create-selenium-domain-test</strong><br />
Generates a new selenium test for the given domain class.</p>
<p>Supply the name of the domain class you want to test, followed by and extension that identifies the sytax to use. The extension of this must be one of html, psv, gsp.</p>
<p>Example use:</p>
<blockquote><p>grails create-selenium-domain-test book.gsp</p></blockquote>
<p>creates</p>
<blockquote><p>web-app/selenium/tests/book.gsp</p></blockquote>
<p>The generated test exercises the default grails scaffolding for CRUD functionality.</p>
<p><strong>postResults page</strong><br />
A basic postResults page is provided, and if required the results can be saved to xml.</p>
<p>When using grails run-selenium, you can add properties to application.properties:</p>
<ul>
<li>selenium.auto=true</li>
<li>selenium.resultsUrl=/your/url/here (defaults to ${appContext}/selenium/postResults)</li>
<li>selenium.saveXmlTo=/tmp/selenium.xml</li>
</ul>
<p>By default resultsUrl is set asÂ  ${appContext}/selenium/postResults which is provided as a basic HTML implementation. Nothing fancy.</p>
<p>Download <a href="http://www.javathinking.com/grails/grails-selenium-plugin/0.4/grails-selenium-0.4.zip">here</a> or install with</p>
<blockquote><p>grails install-plugin http://www.javathinking.com/grails/grails-selenium-plugin/0.4/grails-selenium-0.4.zip</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.javathinking.com/2008/03/grails-selenium-04/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Firefox profiles</title>
		<link>http://www.javathinking.com/2008/03/firefox-profiles/</link>
		<comments>http://www.javathinking.com/2008/03/firefox-profiles/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 15:42:59 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.javathinking.com/?p=79</guid>
		<description><![CDATA[If you share a login with someone else (ie. family) Firefox profiles can be very useful. Likewise, if you are a developer and you have several different contexts or modes of operation, profiles can make life a lot easier.
I use them at home with family members &#8211; you can set each person up with their [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>If you share a login with someone else (ie. family) Firefox profiles can be very useful. Likewise, if you are a developer and you have several different contexts or modes of operation, profiles can make life a lot easier.</p>
<p>I use them at home with family members &#8211; you can set each person up with their own profile, so all you have to do is restart Firefox (rather than logging out out of the operating system and then back on as someone else). Firefox will prompt you &#8211; asking who you want to be right now.</p>
<p>At work, how many times have you cleared all of your private settings while debugging, just to see if the problem is related to caching or some other previous state. Creating a profile is much easier &#8211; especially since you probably want to stay logged in to all of those websites you use every day.</p>
<p>Just start firefox from the command line with the parameter &#8216;-profilemanager&#8217; &#8211; you&#8217;ll be prompted with a dialog so you can mange your profiles.</p>
<p>Read more about it here :</p>
<ul>
<li><a href="http://www.borngeek.com/firefox/profile-tutorial/" target="_blank">http://www.borngeek.com/firefox/profile-tutorial/</a></li>
<li><a href="http://lifehacker.com/software/firefox/geek-to-live--manage-multiple-firefox-profiles-231646.php" target="_blank">http://lifehacker.com/software/firefox/geek-to-live&#8211;manage-multiple-firefox-profiles-231646.php</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.javathinking.com/2008/03/firefox-profiles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>grails-selenium-0.3</title>
		<link>http://www.javathinking.com/2008/03/grails-selenium-03/</link>
		<comments>http://www.javathinking.com/2008/03/grails-selenium-03/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 10:02:26 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.javathinking.com/?p=76</guid>
		<description><![CDATA[Version 0.3 of the grails selenium plugin is now available.
This version:

Adds GSP support for writing tests
Fixes bug where hidden directories were shown as suites
Fixes bug on windows with invalid URIs to html tests

To use GSP to generate the tests, use the &#60;sel:test&#62; tag, followed by nested &#60;sel:row&#62; tags.
&#60;sel:row&#62; can take either:

 one &#8216;line&#8217; attribute where [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Version 0.3 of the grails selenium plugin is now available.</p>
<p>This version:</p>
<ul>
<li>Adds GSP support for writing tests</li>
<li>Fixes bug where hidden directories were shown as suites</li>
<li>Fixes bug on windows with invalid URIs to html tests</li>
</ul>
<p>To use GSP to generate the tests, use the &lt;sel:test&gt; tag, followed by nested &lt;sel:row&gt; tags.</p>
<p>&lt;sel:row&gt; can take either:</p>
<ul>
<li> one &#8216;line&#8217; attribute where the command, target and value are pipe separated as per the pipe separated value files</li>
<li>or separate &#8216;command&#8217;, &#8216;target&#8217;, and &#8216;value&#8217; attributes.</li>
</ul>
<p>Because this is a normal GSP file, you have full access to the normal variables and you could call other classes for utility methods.</p>
<p>An example GSP test:</p>
<pre>
&lt;g:set var="bookTitle" value="book0d"/&gt;
&lt;sel:test name="MyTest"&gt;
&lt;sel:row command="open" target="${request.contextPath}"/&gt;
&lt;sel:row line="clickAndWait|link=BookController"/&gt;
&lt;sel:row line="clickAndWait|link=New Book"/&gt;
&lt;sel:row command="type" target="title" value="${bookTitle}"/&gt;
&lt;sel:row line="clickAndWait|//input[@value='Create']"/&gt;
&lt;sel:row line="clickAndWait|link=Book List"/&gt;
&lt;sel:row line="verifyTextPresent|${bookTitle}"/&gt;
&lt;/sel:test&gt;</pre>
<p>Download <a href="http://www.javathinking.com/grails/grails-selenium-plugin/0.3/grails-selenium-0.3.zip">grails-selenium-0.3.zip</a></p>
<p>Also see:</p>
<ul>
<li><a href="http://grails.codehaus.org/Selenium+plugin">Selenium plugin</a></li>
<li><a href="http://www.javathinking.com/?p=66">grails-selenium-0.2</a></li>
<li><a href="http://www.javathinking.com/?p=65">grails-selenium-0.1</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.javathinking.com/2008/03/grails-selenium-03/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Regression testing grails plugins</title>
		<link>http://www.javathinking.com/2008/03/regression-testing-grails-plugins/</link>
		<comments>http://www.javathinking.com/2008/03/regression-testing-grails-plugins/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 11:19:35 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.javathinking.com/?p=75</guid>
		<description><![CDATA[For regression testing the grails plugins I&#8217;ve released, I have a shell script that:

cleans up any previous runs
packages the current code for the plugin OR downloads a release from my web site
creates a new grails app
copies preprepared resources into this new grails app
installs the plugin

Now all I have to do is run the application and [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>For regression testing the grails plugins I&#8217;ve released, I have a shell script that:</p>
<ol>
<li>cleans up any previous runs</li>
<li>packages the current code for the plugin OR downloads a release from my web site</li>
<li>creates a new grails app</li>
<li>copies preprepared resources into this new grails app</li>
<li>installs the plugin</li>
</ol>
<p>Now all I have to do is run the application and test it through the browser (potential for selenium to help here?). This is great for testing the plugin against a new grails version, or just for testing code changes to the plugin itself.</p>
<p>I put the script in &lt;project_home&gt;/test/regression/run.sh and the resources in &lt;project_home&gt;/test/regression/resources. The resources directory contains files like domain objects etc in the same directory layout as a normal grails project. This way I just need to copy the contents of the resources directory over the top of my newly created project.</p>
<p>I should have written it as an ANT script though (what was I thinking?) &#8211; then it would be platform independent. I&#8217;ll migrate it to ANT soon.</p>
<p>I&#8217;d appreciate any comments about the process though &#8211; is it useful to you?</p>
<p>Download the script <a href="/grails/misc/regression-0.1.sh.txt">here</a>. Use it with care, it does delete some directories.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javathinking.com/2008/03/regression-testing-grails-plugins/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

