<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUMBSH48eyp7ImA9WhRRFEk.&quot;"><id>tag:blogger.com,1999:blog-5372376616325579954</id><updated>2011-11-27T20:24:19.073-05:00</updated><category term="grails" /><category term="GORM" /><category term="integration-tests" /><category term="grails ajax" /><category term="tomcat" /><category term="introduction" /><category term="java" /><category term="validation" /><title>Explorations in software</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://krollrich.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://krollrich.blogspot.com/" /><author><name>Rich Kroll</name><uri>http://www.blogger.com/profile/16813942547195314076</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="22" height="32" src="http://1.bp.blogspot.com/_RFgAAeZIvJ4/SvT4UhcYD8I/AAAAAAAAAEk/6WfTxtB-oJg/S220/me.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/ExplorationsInSoftware" /><feedburner:info uri="explorationsinsoftware" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DUQFRXw_cCp7ImA9WxBSEUk.&quot;"><id>tag:blogger.com,1999:blog-5372376616325579954.post-6350697173591838989</id><published>2009-12-17T15:28:00.005-05:00</published><updated>2009-12-18T09:41:54.248-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-18T09:41:54.248-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="java" /><category scheme="http://www.blogger.com/atom/ns#" term="grails" /><category scheme="http://www.blogger.com/atom/ns#" term="tomcat" /><title>Run a Java web application within grails</title><link rel="replies" type="application/atom+xml" href="http://krollrich.blogspot.com/feeds/6350697173591838989/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://krollrich.blogspot.com/2009/12/run-java-web-application-within-grails.html#comment-form" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/6350697173591838989?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/6350697173591838989?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ExplorationsInSoftware/~3/krGS4c5x5P0/run-java-web-application-within-grails.html" title="Run a Java web application within grails" /><author><name>Rich Kroll</name><uri>http://www.blogger.com/profile/16813942547195314076</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="22" height="32" src="http://1.bp.blogspot.com/_RFgAAeZIvJ4/SvT4UhcYD8I/AAAAAAAAAEk/6WfTxtB-oJg/S220/me.jpg" /></author><thr:total>8</thr:total><content type="html">Ever needed to run an existing java web application side by side with your grails project?  I found myself in exactly that position this week, and discovered that it (like most things in grails) was rather simple to accomplish.  Considering I work in a predominately Java environment, I often need to run a java web application side by side with my grails work.  To date, I would simply run grails 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RwpoTWlRWYk7GJuglY_LOcdOHU0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RwpoTWlRWYk7GJuglY_LOcdOHU0/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/RwpoTWlRWYk7GJuglY_LOcdOHU0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RwpoTWlRWYk7GJuglY_LOcdOHU0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ExplorationsInSoftware/~4/krGS4c5x5P0" height="1" width="1"/&gt;</content><feedburner:origLink>http://krollrich.blogspot.com/2009/12/run-java-web-application-within-grails.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMNQX87cCp7ImA9WxNaE0k.&quot;"><id>tag:blogger.com,1999:blog-5372376616325579954.post-4587244577997644332</id><published>2009-11-27T13:37:00.005-05:00</published><updated>2009-11-27T13:44:50.108-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-27T13:44:50.108-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="grails ajax" /><title>Easy in-place delete with ajax and grails</title><link rel="replies" type="application/atom+xml" href="http://krollrich.blogspot.com/feeds/4587244577997644332/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://krollrich.blogspot.com/2009/11/easy-in-place-delete-with-ajax-and.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/4587244577997644332?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/4587244577997644332?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ExplorationsInSoftware/~3/dSt5tRQolWM/easy-in-place-delete-with-ajax-and.html" title="Easy in-place delete with ajax and grails" /><author><name>Rich Kroll</name><uri>http://www.blogger.com/profile/16813942547195314076</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="22" height="32" src="http://1.bp.blogspot.com/_RFgAAeZIvJ4/SvT4UhcYD8I/AAAAAAAAAEk/6WfTxtB-oJg/S220/me.jpg" /></author><thr:total>2</thr:total><content type="html">I was recently asked to implement new delete functionality on a list of items.  The catch of this request was that the removal of an item would be done without reloading the page.  This required me to write a boatload of code in both JavaScript and Java to successfully implement.  After this somewhat painful experience, I wanted to see how elegantly this experience would be handled in grails.  I 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/hPbJD1BlRJJmktMnSbNaF8CFIrc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hPbJD1BlRJJmktMnSbNaF8CFIrc/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/hPbJD1BlRJJmktMnSbNaF8CFIrc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/hPbJD1BlRJJmktMnSbNaF8CFIrc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ExplorationsInSoftware/~4/dSt5tRQolWM" height="1" width="1"/&gt;</content><feedburner:origLink>http://krollrich.blogspot.com/2009/11/easy-in-place-delete-with-ajax-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YGRXg_fSp7ImA9WxNbFkk.&quot;"><id>tag:blogger.com,1999:blog-5372376616325579954.post-6053724126631359270</id><published>2009-11-19T10:38:00.001-05:00</published><updated>2009-11-19T10:38:44.645-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-19T10:38:44.645-05:00</app:edited><title>Invoke test classes from groovy</title><link rel="replies" type="application/atom+xml" href="http://krollrich.blogspot.com/feeds/6053724126631359270/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://krollrich.blogspot.com/2009/11/invoke-test-classes-from-groovy.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/6053724126631359270?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/6053724126631359270?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ExplorationsInSoftware/~3/-lXIjiIlVV4/invoke-test-classes-from-groovy.html" title="Invoke test classes from groovy" /><author><name>Rich Kroll</name><uri>http://www.blogger.com/profile/16813942547195314076</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="22" height="32" src="http://1.bp.blogspot.com/_RFgAAeZIvJ4/SvT4UhcYD8I/AAAAAAAAAEk/6WfTxtB-oJg/S220/me.jpg" /></author><thr:total>0</thr:total><content type="html">Just a quick note, mostly for myself.  If a unit test extends GroovyTestCase, it can be run from groovy.

class GroovyTest extends GroovyTestCase {
    void testString {
        assertEquals 'Test failed!', "Test", "Test"
    }
}

To execute this test, run the following command:

$ groovy GroovyTest.groovy
 Time: 0.125
 OK (1 test)

&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Ctiu32SlPEYsWHEVpQDZFxeVYLY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ctiu32SlPEYsWHEVpQDZFxeVYLY/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/Ctiu32SlPEYsWHEVpQDZFxeVYLY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Ctiu32SlPEYsWHEVpQDZFxeVYLY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ExplorationsInSoftware/~4/-lXIjiIlVV4" height="1" width="1"/&gt;</content><feedburner:origLink>http://krollrich.blogspot.com/2009/11/invoke-test-classes-from-groovy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4BRX06eCp7ImA9WxNbEUk.&quot;"><id>tag:blogger.com,1999:blog-5372376616325579954.post-1060088715166924108</id><published>2009-11-13T15:05:00.001-05:00</published><updated>2009-11-13T15:09:14.310-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T15:09:14.310-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="grails" /><category scheme="http://www.blogger.com/atom/ns#" term="validation" /><title>Grails, validation, constraints, oh my!</title><link rel="replies" type="application/atom+xml" href="http://krollrich.blogspot.com/feeds/1060088715166924108/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://krollrich.blogspot.com/2009/11/grails-validation-constraints-oh-my.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/1060088715166924108?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/1060088715166924108?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ExplorationsInSoftware/~3/Cizg2FUEwgc/grails-validation-constraints-oh-my.html" title="Grails, validation, constraints, oh my!" /><author><name>Rich Kroll</name><uri>http://www.blogger.com/profile/16813942547195314076</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="22" height="32" src="http://1.bp.blogspot.com/_RFgAAeZIvJ4/SvT4UhcYD8I/AAAAAAAAAEk/6WfTxtB-oJg/S220/me.jpg" /></author><thr:total>2</thr:total><content type="html">I must admit that I am continually impressed by the ease with which grails makes previously tedious tasks simple and easy.  In my current project I found it necessary to enforce a constraint that a date be in the future.  My first reaction was along the lines of "no problem, I'll just validate the data in the business tier", and then luckily discovered a much more elegant solution in grails: 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9BOJljbb7k9Y8Gu855K72dxVAWw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9BOJljbb7k9Y8Gu855K72dxVAWw/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/9BOJljbb7k9Y8Gu855K72dxVAWw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9BOJljbb7k9Y8Gu855K72dxVAWw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ExplorationsInSoftware/~4/Cizg2FUEwgc" height="1" width="1"/&gt;</content><feedburner:origLink>http://krollrich.blogspot.com/2009/11/grails-validation-constraints-oh-my.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4MSX05eSp7ImA9WxNbEUk.&quot;"><id>tag:blogger.com,1999:blog-5372376616325579954.post-6883293395049178862</id><published>2009-11-07T10:55:00.004-05:00</published><updated>2009-11-13T15:09:48.321-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T15:09:48.321-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="integration-tests" /><category scheme="http://www.blogger.com/atom/ns#" term="GORM" /><category scheme="http://www.blogger.com/atom/ns#" term="grails" /><title>Grails 1.1, integration tests, and unsaved transient instance errors</title><link rel="replies" type="application/atom+xml" href="http://krollrich.blogspot.com/feeds/6883293395049178862/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://krollrich.blogspot.com/2009/11/grails-11-integration-tests-and-unsaved.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/6883293395049178862?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/6883293395049178862?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ExplorationsInSoftware/~3/Bib20oJ-TKY/grails-11-integration-tests-and-unsaved.html" title="Grails 1.1, integration tests, and unsaved transient instance errors" /><author><name>Rich Kroll</name><uri>http://www.blogger.com/profile/16813942547195314076</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="22" height="32" src="http://1.bp.blogspot.com/_RFgAAeZIvJ4/SvT4UhcYD8I/AAAAAAAAAEk/6WfTxtB-oJg/S220/me.jpg" /></author><thr:total>0</thr:total><content type="html">In the grails documentation, and every book on the subject you will find an example similar to:

class Author {
    static hasMany = [ books : Book ]
    String name
}

class Book {
  static belongsTo = Author
  Author author
  String title
}

The belongsTo reference ensures that saves, updates, and deletes are cascaded. All the information that I have found provides an example to save your 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/-PPMQDZWsDitFSyOV1UFjxRhLos/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-PPMQDZWsDitFSyOV1UFjxRhLos/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/-PPMQDZWsDitFSyOV1UFjxRhLos/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/-PPMQDZWsDitFSyOV1UFjxRhLos/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ExplorationsInSoftware/~4/Bib20oJ-TKY" height="1" width="1"/&gt;</content><feedburner:origLink>http://krollrich.blogspot.com/2009/11/grails-11-integration-tests-and-unsaved.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcEQnc6eyp7ImA9WxNbEUk.&quot;"><id>tag:blogger.com,1999:blog-5372376616325579954.post-2831501549890264953</id><published>2009-11-06T23:01:00.001-05:00</published><updated>2009-11-13T15:10:03.913-05:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-13T15:10:03.913-05:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="introduction" /><category scheme="http://www.blogger.com/atom/ns#" term="grails" /><title>The Grails journey begins</title><link rel="replies" type="application/atom+xml" href="http://krollrich.blogspot.com/feeds/2831501549890264953/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://krollrich.blogspot.com/2009/11/grails-journey-begins.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/2831501549890264953?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5372376616325579954/posts/default/2831501549890264953?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/ExplorationsInSoftware/~3/VW6jyMxKAiA/grails-journey-begins.html" title="The Grails journey begins" /><author><name>Rich Kroll</name><uri>http://www.blogger.com/profile/16813942547195314076</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="22" height="32" src="http://1.bp.blogspot.com/_RFgAAeZIvJ4/SvT4UhcYD8I/AAAAAAAAAEk/6WfTxtB-oJg/S220/me.jpg" /></author><thr:total>5</thr:total><content type="html">After working with ColdFusion and becoming frustrated with some of it's shortcomings, I decided to use a "grown up" language; Java.  It's been quite a few years since I made the leap to Java, and it has been a very interesting journey.  I have had the "pleasure" to work with many different frameworks, tools, and technologies.  With each I began with the same goal: to find an easier way to do X, 
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/00rudhSSv0d4UNCRR_HlKmWuIU0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/00rudhSSv0d4UNCRR_HlKmWuIU0/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/00rudhSSv0d4UNCRR_HlKmWuIU0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/00rudhSSv0d4UNCRR_HlKmWuIU0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/ExplorationsInSoftware/~4/VW6jyMxKAiA" height="1" width="1"/&gt;</content><feedburner:origLink>http://krollrich.blogspot.com/2009/11/grails-journey-begins.html</feedburner:origLink></entry></feed>

