<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>GrooovyGeorge on Grails</title>
	<atom:link href="http://grooovygeorge.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://grooovygeorge.wordpress.com</link>
	<description>Mind the triple &#039;G&#039;!</description>
	<lastBuildDate>Fri, 03 Feb 2012 10:54:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='grooovygeorge.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>GrooovyGeorge on Grails</title>
		<link>http://grooovygeorge.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://grooovygeorge.wordpress.com/osd.xml" title="GrooovyGeorge on Grails" />
	<atom:link rel='hub' href='http://grooovygeorge.wordpress.com/?pushpress=hub'/>
		<item>
		<title>The Groovy spread operator * (asterisk)</title>
		<link>http://grooovygeorge.wordpress.com/2012/02/03/the-groovy-spread-operator-asterisk/</link>
		<comments>http://grooovygeorge.wordpress.com/2012/02/03/the-groovy-spread-operator-asterisk/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 10:52:37 +0000</pubDate>
		<dc:creator>Georg</dc:creator>
				<category><![CDATA[Groovy/Grails]]></category>
		<category><![CDATA[groovy]]></category>

		<guid isPermaLink="false">http://grooovygeorge.wordpress.com/?p=22</guid>
		<description><![CDATA[Whenever it comes to operating on collections, you know why you&#8217;ll love Groovy. In this example we&#8217;ll get to know the asterisk or spread operator, a really helpful colleague &#8211; and believe me, it&#8217;s got nothing to do with pointers from C ! Actually, the operator has two functions: Firstly, it&#8217;s used to spread or [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grooovygeorge.wordpress.com&amp;blog=30695419&amp;post=22&amp;subd=grooovygeorge&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Whenever it comes to operating on collections, you know why you&#8217;ll love Groovy.<br />
In this example we&#8217;ll get to know the asterisk or spread operator, a really helpful colleague &#8211; and believe me, it&#8217;s got nothing to do with pointers from C <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> !</p>
<p>Actually, the operator has two functions:</p>
<ul>
<li>Firstly, it&#8217;s used to spread or &#8220;explode&#8221; lists. So it&#8217;s actually the counterpart of a join operation</li>
<li>Secondly it provides an even shorter way of traversing and operating collections.</li>
</ul>
<p>Let&#8217;s have a look on the first use case and assume we&#8217;ve two lists that we&#8217;d like to merge. Using the spread operator, it&#8217;s a one-liner:</p>
<blockquote><p>def list0ne = ['a','b']<br />
def listTwo = ['c','d']<br />
def listAll = [*list0ne, *listTwo]</p>
<p>assert listAll.equals(['a','b','c','d'])</p>
<p>def otherList = []<br />
otherList.addAll(listOne)<br />
otherList.addAll(listTwo)<br />
assert listAll.equals(otherList)</p></blockquote>
<p>So listAll is created by &#8220;exploding&#8221; the lists first and packing their elements into the new list. A more Java-like way to achieve the same is shown using the addAll method.</p>
<p>The second use case of the spread operator refers to calling an object&#8217;s methods on each item of a collection. Note that the method called cannot be an arbitrary method but must be one known to the object.<br />
For example to get the hashCodes of strings, one could use this statement:</p>
<blockquote><p>def strings = ["1","2","3"]<br />
def hashCodes = strings*.hashCode()<br />
// Result: [49, 50, 51]</p></blockquote>
<p>More examples can be found on the <a title="Groovy documentation" href="http://docs.codehaus.org/display/GROOVY/Operators#Operators-SpreadOperator">Groovy documentation</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grooovygeorge.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grooovygeorge.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grooovygeorge.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grooovygeorge.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grooovygeorge.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grooovygeorge.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grooovygeorge.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grooovygeorge.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grooovygeorge.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grooovygeorge.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grooovygeorge.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grooovygeorge.wordpress.com/22/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grooovygeorge.wordpress.com/22/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grooovygeorge.wordpress.com/22/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grooovygeorge.wordpress.com&amp;blog=30695419&amp;post=22&amp;subd=grooovygeorge&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grooovygeorge.wordpress.com/2012/02/03/the-groovy-spread-operator-asterisk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc48fce0268d44c389253f39932b8b2e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grooovygeorge</media:title>
		</media:content>
	</item>
		<item>
		<title>Shifting Weceem CMS to Grails 2.0</title>
		<link>http://grooovygeorge.wordpress.com/2012/01/12/shifting-weceem-cms-to-grails-2-0/</link>
		<comments>http://grooovygeorge.wordpress.com/2012/01/12/shifting-weceem-cms-to-grails-2-0/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 16:51:11 +0000</pubDate>
		<dc:creator>Georg</dc:creator>
				<category><![CDATA[Groovy/Grails]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[weceem]]></category>

		<guid isPermaLink="false">http://grooovygeorge.wordpress.com/?p=7</guid>
		<description><![CDATA[Weceem is an OpenSource CMS built with &#8220;rock solid&#8221; Grails. Weceem can be used as standalone web application, but also as plugin for existing Grails applications using Weceem as content editor and/or repository. Like  a christmas gift, Grails 2.0 has been released in Q4 2011, bestowing us with new fancy features. Although the current release 1.1.2 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grooovygeorge.wordpress.com&amp;blog=30695419&amp;post=7&amp;subd=grooovygeorge&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Weceem is an OpenSource CMS built with &#8220;rock solid&#8221; <a title="grails.org" href="http://grails.org" target="_blank">Grails</a>. Weceem can be used as standalone web application, but also as plugin for existing Grails applications using Weceem as content editor and/or repository.</p>
<p>Like  a christmas gift, Grails 2.0 has been released in Q4 2011, bestowing us with new fancy features. Although the current release 1.1.2 of Weceem is built on Grails 1.3, Marc Palmer (the head behind <a title="weceem.org" href="http://weceem.org" target="_blank">Weceem</a>) doesn&#8217;t make a secret that it&#8217;s actually ready to run with Grails 2.0.</p>
<p>As there is no .war package available configured in order to run with Grails 2.0, I tried to package it on my own &#8211; and it wasn&#8217;t that difficult <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . So here we go:</p>
<ol>
<li>using Grails 2.0, create a new, blank Grails application (call it weceem) using the &#8220;create-app&#8221; command</li>
<li>Download the 1.1.2 <a title="weceem sources" href="https://github.com/jCatalog/weceem-plugin" target="_blank">sources of Weceem from github</a></li>
<li>copy the sources into the newly created project so that the application&#8217;s structure is preserved</li>
<li>slightly adapt the project structure and build the grails project as war (using grails war). What has to be changed in detail?</li>
</ol>
<div>Well, the actual part is the modification of <em>application.properties</em>. We&#8217;ll update the plugin&#8217;s versions so that they match the conventions of Grails 2. It should therefore look like that:</div>
<div>
<blockquote><p>#Grails Metadata file<br />
app.grails.version=2.0.0<br />
app.name=weceem<br />
app.servlet.version=2.5<br />
app.version=2.0<br />
plugins.bean-fields=1.0.RC5<br />
plugins.blueprint=1.0.2<br />
plugins.cache-headers=1.1.5<br />
plugins.ckeditor=3.6.0.0<br />
plugins.feeds=1.5<br />
plugins.hibernate=2.0.0<br />
plugins.jquery=1.7.1<br />
plugins.jquery-ui=1.8.15<br />
plugins.mail=0.9<br />
plugins.navigation=1.3.2<br />
plugins.quartz=0.4.2<br />
plugins.searchable=0.6.3<br />
plugins.spring-security-core=1.2.6<br />
plugins.svn=1.0.0.M1<br />
plugins.taggable=1.0<br />
plugins.tomcat=2.0.0<br />
plugins.weceem-spring-security=1.1</p></blockquote>
</div>
<p>Now, go to grails-app/views and make sure that there is no <em>index.gsp</em> &#8211; you can safely remove it as it will be replaced by the start page of your website.</p>
<p>If your using IntelliJ, it should automatically download the newest plugins. Your project structure should look like that:</p>
<div id="attachment_8" class="wp-caption alignleft" style="width: 418px"><a href="http://grooovygeorge.files.wordpress.com/2012/01/weceem-config.png"><img class="size-full wp-image-8" title="weceem-config" src="http://grooovygeorge.files.wordpress.com/2012/01/weceem-config.png?w=590" alt="IntelliJ project configuration for Weceem"   /></a><p class="wp-caption-text">IntelliJ project configuration for Weceem</p></div>
<p>Having that done, try out &#8220;Grails war&#8221; to build the web application archive.  When being asked if a plugin should be overwritten by a newer version, say &#8220;n&#8221; to preserve the existing version. I&#8217;m not sure if a newer one would do, but that way we&#8217;re on the safe side.</p>
<p>Did it work? Then enjoy Weceem with Grails 2!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/grooovygeorge.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/grooovygeorge.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/grooovygeorge.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/grooovygeorge.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/grooovygeorge.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/grooovygeorge.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/grooovygeorge.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/grooovygeorge.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/grooovygeorge.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/grooovygeorge.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/grooovygeorge.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/grooovygeorge.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/grooovygeorge.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/grooovygeorge.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=grooovygeorge.wordpress.com&amp;blog=30695419&amp;post=7&amp;subd=grooovygeorge&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://grooovygeorge.wordpress.com/2012/01/12/shifting-weceem-cms-to-grails-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/fc48fce0268d44c389253f39932b8b2e?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">grooovygeorge</media:title>
		</media:content>

		<media:content url="http://grooovygeorge.files.wordpress.com/2012/01/weceem-config.png" medium="image">
			<media:title type="html">weceem-config</media:title>
		</media:content>
	</item>
	</channel>
</rss>
