<?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>Transient Technology &#187; roo</title>
	<atom:link href="http://martinaharris.com/tag/roo/feed/" rel="self" type="application/rss+xml" />
	<link>http://martinaharris.com</link>
	<description>Next time you look it might be gone</description>
	<lastBuildDate>Wed, 25 Apr 2012 09:52:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Untangling a Gigaspace Pojo</title>
		<link>http://martinaharris.com/2009/12/untangling-a-gigaspace-pojo/</link>
		<comments>http://martinaharris.com/2009/12/untangling-a-gigaspace-pojo/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 05:00:02 +0000</pubDate>
		<dc:creator>Martin Harris</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[composition]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[gigaspaces]]></category>
		<category><![CDATA[jaxb]]></category>
		<category><![CDATA[re-factor]]></category>
		<category><![CDATA[roo]]></category>

		<guid isPermaLink="false">http://martinaharris.com/?p=543</guid>
		<description><![CDATA[A hibernate entity class is annotated describing to hibernate how its to be persisted.  Annotate this class with JAXB for a transformation, chuck in some gigaspace annotations so we can add it to a cache and things start to get messy.  Worse still gigaspace has some tight restrictions surrounding what it requires from a pojo, hibernate has others.  Its tempting to leave the resulting class cluttered with these soft concerns.  I propose a solution using composition that allows for easier maintenance ongoing. <a href="http://martinaharris.com/2009/12/untangling-a-gigaspace-pojo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I am going to build myself another example application.  I find these very handy for exploring ideas.  If you already have a project with hibernate, spring, gigaspaces and such setup, your much more likely to try a few ideas out, and then blog them.  So for a while this blog might be more quiet than usual.  I think I may use Roo to do it.  Roo looks like a great platform for quickly building something up for an experiment.  i.e You can throw together a new set of entities, and then build an example on top of them.  Before I begin, one last thing from my current experiments.</p>
<h2>Sometimes JPA entity classes get hijacked.</h2>
<p>Say for instance you have a need to pass entity classes to another system, via JAXB.  Its possible to use DTO objects for the transfer or you could just annotate the the entity classes.  In the example below, I wanted to fetch something from a database via JPA and write it into gigaspaces.  It soon gets messy your Entity classes start to become a hub in the middle of your application with things dipping into some of the classes and annotating them and throwing them here and there.<br />
<span id="more-543"></span></p>
<p>Lets look at a simple one from my example system.  This one is only used by gigaspaces and hibernate, it could get much messier than this if I chose to add one or two more technologies.  I am deliberately leaving the imports in the examples so you can see where it all came from.</p>
<pre class="brush: java; gutter: false; wrap-lines: false; highlight: [24,25,26,27,28,29,30,31,32]">import com.gigaspaces.annotation.pojo.SpaceClass;
import com.gigaspaces.annotation.pojo.SpaceId;
import com.gigaspaces.annotation.pojo.SpaceRouting;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name = "HOUSE")
@SpaceClass
public class MessyHouse {

    private String id;
    private String name;
    private String address;
    private String pageId;

    public MessyHouse() {
    }  

    @SpaceRouting
    @Transient
    public String getPageId() {
    return pageId;
    }

    public void setPageId(String pageId) {
    this.pageId = pageId;
    }

    @Id
    @GeneratedValue
    @Column(name = "HOUSE_ID")
    @SpaceId(autoGenerate = false)
    public String getId() {
    return id;
    }

    public void setId(String id) {
    this.id = id;
    }

    public String getAddress() {
    return address;
    }

    public void setAddress(String address) {
    this.address = address;
    }

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }
}</pre>
<h2>Some things I dislike about what I have done here</h2>
<ul>
<li>See the block I have marked below SpaceRouting.  In this class I wanted to change the Gigaspace routing strategy, so I have a method that has nothing to do with the persistence.  Does adding annotations break the &#8220;A class should have only one responsibility&#8221; design goal?  No perhaps not, but adding a whole method that is a Gigaspace concern does.</li>
<li>As you add more and more annotations from different technologies things get messy very quickly.</li>
<li>I have a JPA based DAO that uses this class.  I also have a set of gigaspace processing units that use this class.  Both systems are impinging their own design requirements on the class.  At the moment they are deceptively similar.  Gigaspace insists upon a default constructor, and getters and setters for <strong>all</strong> fields you wish to persist.  Hibernate is not quite as strict.  What if Gigaspaces relaxes that rule later and allows you to annotate the fields instead?  Or perhaps added some other design restriction.  Its unclear by looking at the class what things are there for hibernates soft contract and what gigaspace is insisting upon.</li>
<li>If my gigaspace experiment gets big (not that likely!).  I might want to split off the gigaspace into its own project and use it as a component.  Ah! so what about the MessyHouse class then?  Where should that live?  Indeed its going to be in the wrong project wherever I decide to keep it.</li>
</ul>
<p>This is one solution that I put to you.  Create a class for the gigaspace fields, and compose a House class into it.  With composition we can neatly separate the concerns.  Well almost.  Gigaspace may store these objects and need to restore them at some point.  I believe to do that it creates House, and populates it.  Then it creates GsHouseWrapper and injects House into it.  To do that you need a setter for the house but at least we have a class with Gigaspace design constraints and another with Hibernate peculiarities.  Check out the classes below and let me know what you make of the design.  Are there alternatives?</p>
<p>Also, currently there is a problem with the design below.  The delegation methods fail with an exception.  i.e house.setId(id); fails when writing the object to the space.  I need to submit a ticket with the Gigaspace crew to figure out why.</p>
<h2>The refactored classes.</h2>
<pre class="brush: java; gutter: false; wrap-lines: false">package javapuzzlers.compose;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "HOUSE")
public class House {

    private String id;
    private String name;
    private String address;

    public House() {
    }

    @Id
    @GeneratedValue
    @Column(name = "HOUSE_ID")
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

package javapuzzlers.compose;

import com.gigaspaces.annotation.pojo.SpaceClass;
import com.gigaspaces.annotation.pojo.SpaceId;
import com.gigaspaces.annotation.pojo.SpaceRouting;

@SpaceClass
public class GsHouseWrapper {

    private House house;
    private String pageId;

    public GsHouseWrapper() {
    }

    public GsHouseWrapper(House house) {
      this.house = house;
    }

    @SpaceId(autoGenerate = false)
    public String getId() {
        return house.getId();
    }

    public void setId(String id) {
        house.setId(id);
    }

    @SpaceRouting
    public String getPageId() {
        return pageId;
    }

    public void setPageId(String pageId) {
        this.pageId = pageId;
    }

    public GsHouseWrapper(House house) {
        this.house = house;
    }

    public String getName() {
        return house.getName();
    }

    public String getAddress() {
        return house.getAddress();
    }
}
</pre>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F&amp;title=Untangling+a+Gigaspace+Pojo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F&amp;title=Untangling+a+Gigaspace+Pojo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F&amp;title=Untangling+a+Gigaspace+Pojo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F&amp;headline=Untangling+a+Gigaspace+Pojo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Untangling+a+Gigaspace+Pojo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Untangling+a+Gigaspace+Pojo&amp;u=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Untangling+a+Gigaspace+Pojo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Untangling+a+Gigaspace+Pojo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Untangling+a+Gigaspace+Pojo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F&amp;title=Untangling+a+Gigaspace+Pojo&amp;summary=&amp;source=" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F12%2Funtangling-a-gigaspace-pojo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div><div class="dzone_button" style="float: right; margin-left: 5px;">
<script type="text/javascript">
var dzone_url = 'http://martinaharris.com/2009/12/untangling-a-gigaspace-pojo/';
var dzone_title = 'Untangling a Gigaspace Pojo';
var dzone_blurb = '';
var dzone_style = '2';
</script>
<script language="javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js"></script>
</div>]]></content:encoded>
			<wfw:commentRss>http://martinaharris.com/2009/12/untangling-a-gigaspace-pojo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Racing with Roo</title>
		<link>http://martinaharris.com/2009/11/racing-with-roo/</link>
		<comments>http://martinaharris.com/2009/11/racing-with-roo/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 23:17:43 +0000</pubDate>
		<dc:creator>Martin Harris</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[roo]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://martinaharris.com/?p=320</guid>
		<description><![CDATA[In my last post I said that I would have a deeper look at Spring Roo. Well I still have not quite done that. But I did have a race to see how long it would take me to get &#8230; <a href="http://martinaharris.com/2009/11/racing-with-roo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In my last post I said that I would have a deeper look at Spring Roo.  Well I still have not quite done that.  But I did have a race to see how long it would take me to get my first website up and running with STS and Roo shell.  The previous night I downloaded STS, and today I installed it on my Linux server, all very smooth no issues.  Next I found a roo shell tutorial to follow: <a title="Roo Getting Started Part 2" href="http://blog.springsource.com/2009/05/27/roo-part-2/" target="_blank">Roo Shell Tutorial Part 2</a> from the SpringSource blog by Ben Alex.  This uses roo from the prompt, I am going to use the shell in STS.  The challenge is to follow the tutorial and take timings to get some understanding of how difficult it is to get going with Roo.</p>
<ol>
<li><strong>21:45</strong> Open Eclipse.</li>
<li><strong>21:49 </strong>Updates downloaded and maven re-indexed.</li>
<li><strong>21:53</strong> Start tutorial, lots of downloads from maven after project creation.</li>
<li><strong>21:55</strong> Restart eclipse to enable the runtime weaving, STS does not return&#8230;restarted it from the prompt, deleted the project and started again as it looked incomplete.</li>
<li><strong>22:00</strong> Bumbling through the tutorial.  This is very easy, love the CTRL^space completion.  I have done quite a bit of Linux work, and this shell is very easy to use.</li>
<li><strong>22:14 </strong>Running the tests using <strong>roo&gt; perform test</strong>. This runs maven, which fails because it cant find the integration test class, RsvpIntegrationTest.  Investigation from the bash prompt reveals that all tests pass under maven, so its not an issue with the project roo has created.  More download and fiddling about.  The test runs from eclipse too, so I move on.</li>
<li><strong>22:38</strong> Website up! Selenium tests all pass.  Investigation of the functionality shows that its working!  Done in 53 mins not bad I think!</li>
</ol>
<div id="attachment_323" class="wp-caption alignleft" style="width: 547px"><a href="http://martinaharris.com/wp-content/uploads/2009/11/rooRunning1.jpg"><img class="size-full wp-image-323" title="rooRunning1" src="http://martinaharris.com/wp-content/uploads/2009/11/rooRunning1.jpg" alt="Roo Up and Running!" width="537" height="144" /></a><p class="wp-caption-text">Roo Up and Running!</p></div>
<h2>Conclusion</h2>
<p>Yea easy, a quick look over the project shows its very neat and tidy.  Most of the time was spent in download and the false start.  The configuration easy to follow and the generated code would be easy to use.  So yes, might have a proper look at Roo at some point!  <img src='http://martinaharris.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F&amp;title=Racing+with+Roo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F&amp;title=Racing+with+Roo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F&amp;title=Racing+with+Roo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F&amp;headline=Racing+with+Roo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Racing+with+Roo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Racing+with+Roo&amp;u=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Racing+with+Roo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Racing+with+Roo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Racing+with+Roo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F&amp;title=Racing+with+Roo&amp;summary=&amp;source=" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fracing-with-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div><div class="dzone_button" style="float: right; margin-left: 5px;">
<script type="text/javascript">
var dzone_url = 'http://martinaharris.com/2009/11/racing-with-roo/';
var dzone_title = 'Racing with Roo';
var dzone_blurb = '';
var dzone_style = '2';
</script>
<script language="javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js"></script>
</div>]]></content:encoded>
			<wfw:commentRss>http://martinaharris.com/2009/11/racing-with-roo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quick look at the latest SpringSource STS and Roo</title>
		<link>http://martinaharris.com/2009/11/springsource-sts-and-roo/</link>
		<comments>http://martinaharris.com/2009/11/springsource-sts-and-roo/#comments</comments>
		<pubDate>Mon, 16 Nov 2009 09:20:28 +0000</pubDate>
		<dc:creator>Martin Harris</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[annotation]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[roo]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://martinaharris.com/?p=312</guid>
		<description><![CDATA[Christian Dupuis from SpringSource shows some of the new features on the SpringIde Blog I used Spring STS for a few months before starting at Lab49, and found it to be a good distribution over the standard Eclipse build. It &#8230; <a href="http://martinaharris.com/2009/11/springsource-sts-and-roo/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="Christian Dupuis" href="http://blog.springsource.com/author/cdupuis/" target="_blank">Christian Dupuis</a> from SpringSource shows some of the new features on the <a title="SpringIde Blog" href="http://springide.org/blog/" target="_blank">SpringIde Blog</a></p>
<p>I used Spring STS for a few months before starting at Lab49, and found it to be a good distribution over the standard Eclipse build.  It has lots of extra productivity features for Spring based development some of which are not available by downloading Spring plugins and adding them to a normal distribution.<br />
<strong>The things I like best are:</strong></p>
<ul>
<li>The edit, navigation and search systems now support the spring annotations.  So now you can navigate and search for beans declared via annotations.</li>
<li>Ability to include new XML domains in the spring configuration from a popup list.</li>
<li>The enhanced XML editing support now has inline error checking.</li>
<li>This XML editor also supports completion and checking of class and bean names.</li>
<li>Roo shell looks interesting too.</li>
</ul>
<p><strong><a title="SpringSource Roo Product Page" href="http://www.springsource.org/roo" target="_blank">Roo and Roo Shell</a></strong><br />
The Roo system looks great.  Its a system to generate and support a JEE system.  The roo shell can be used to configure JEE components.  You can have a basic website up in seconds.  Like Groovy and Grails you get spring standards built in, and your not dependent on the Roo system once your finished.</p>
<p>I am going to take a proper look at it at some point.</p>
<div class="lightsocial_container"><a class="lightsocial_a" href="http://digg.com/submit?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F&amp;title=Quick+look+at+the+latest+SpringSource+STS+and+Roo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/digg.png" alt="Digg This" title="Digg This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.reddit.com/submit?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F&amp;title=Quick+look+at+the+latest+SpringSource+STS+and+Roo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/reddit.png" alt="Reddit This" title="Reddit This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F&amp;title=Quick+look+at+the+latest+SpringSource+STS+and+Roo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/stumbleupon.png" alt="Stumble Now!" title="Stumble Now!" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://buzz.yahoo.com/buzz?targetUrl=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F&amp;headline=Quick+look+at+the+latest+SpringSource+STS+and+Roo" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/yahoo_buzz.png" alt="Buzz This" title="Buzz This" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dzone.com/links/add.html?title=Quick+look+at+the+latest+SpringSource+STS+and+Roo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/dzone.png" alt="Vote on DZone" title="Vote on DZone" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.facebook.com/sharer.php?t=Quick+look+at+the+latest+SpringSource+STS+and+Roo&amp;u=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/facebook.png" alt="Share on Facebook" title="Share on Facebook" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://delicious.com/save?title=Quick+look+at+the+latest+SpringSource+STS+and+Roo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/delicious.png" alt="Bookmark this on Delicious" title="Bookmark this on Delicious" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.dotnetkicks.com/kick/?title=Quick+look+at+the+latest+SpringSource+STS+and+Roo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/dotnetkicks.png" alt="Kick It on DotNetKicks.com" title="Kick It on DotNetKicks.com" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://dotnetshoutout.com/Submit?title=Quick+look+at+the+latest+SpringSource+STS+and+Roo&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/dotnetshoutout.png" alt="Shout it" title="Shout it" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F&amp;title=Quick+look+at+the+latest+SpringSource+STS+and+Roo&amp;summary=&amp;source=" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/linkedin.png" alt="Share on LinkedIn" title="Share on LinkedIn" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.technorati.com/faves?add=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/technorati.png" alt="Bookmark this on Technorati" title="Bookmark this on Technorati" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://twitter.com/home?status=Reading+http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/twitter.png" alt="Post on Twitter" title="Post on Twitter" /></a>&nbsp;&nbsp;<a class="lightsocial_a" href="http://www.google.com/buzz/post?url=http%3A%2F%2Fmartinaharris.com%2F2009%2F11%2Fspringsource-sts-and-roo%2F" target="_blank"><img class="lightsocial_img" src="http://martinaharris.com/wp-content/plugins/light-social/google_buzz.png" alt="Google Buzz (aka. Google Reader)" title="Google Buzz (aka. Google Reader)" /></a>&nbsp;&nbsp;</div><div class="dzone_button" style="float: right; margin-left: 5px;">
<script type="text/javascript">
var dzone_url = 'http://martinaharris.com/2009/11/springsource-sts-and-roo/';
var dzone_title = 'Quick look at the latest SpringSource STS and Roo';
var dzone_blurb = '';
var dzone_style = '2';
</script>
<script language="javascript" src="http://widgets.dzone.com/links/widgets/zoneit.js"></script>
</div>]]></content:encoded>
			<wfw:commentRss>http://martinaharris.com/2009/11/springsource-sts-and-roo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

