<?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: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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Open minds leads to freedom</title>
	
	<link>http://rafaelnaufal.com/blog</link>
	<description>Communicating my thoughts on software development</description>
	<lastBuildDate>Sat, 08 Dec 2012 00:00:00 PST</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
<image><url>http://www.rafaelnaufal.com/favicon.ico</url></image>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/rafaelnaufal-rss" /><feedburner:info uri="rafaelnaufal-rss" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://superfeedr.com/hubbub" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/rafaelnaufal-rss" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Frafaelnaufal-rss" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item><title>Links for 2012-12-07 [del.icio.us]</title><link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/LAaauc7tO8Y/rnaufal</link><pubDate>Sat, 08 Dec 2012 00:00:00 PST</pubDate><guid isPermaLink="false">http://del.icio.us/rnaufal#2012-12-07</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.wowebook.be/"&gt;Home | Wow! eBook - Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://themeforest.net/"&gt;Premium WordPress Themes, Web Templates, Mobile Themes | ThemeForest&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/LAaauc7tO8Y" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/rnaufal#2012-12-07</feedburner:origLink></item><item><title>Links for 2012-10-30 [del.icio.us]</title><link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/gNDRkagn3gE/rnaufal</link><pubDate>Wed, 31 Oct 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/rnaufal#2012-10-30</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.coursera.org/"&gt;Coursera.org&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/gNDRkagn3gE" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/rnaufal#2012-10-30</feedburner:origLink></item><item><title>Links for 2012-09-03 [del.icio.us]</title><link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/kboK2kptcR4/rnaufal</link><pubDate>Tue, 04 Sep 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/rnaufal#2012-09-03</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/10294808/android-mount-the-filesystem-with-write-permission"&gt;linux - Android mount the filesystem with write permission - Stack Overflow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/kboK2kptcR4" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/rnaufal#2012-09-03</feedburner:origLink></item><item><title>Links for 2012-08-31 [del.icio.us]</title><link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/0lHRqLf-D7Y/rnaufal</link><pubDate>Sat, 01 Sep 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/rnaufal#2012-08-31</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.catswhocode.com/blog/19-ffmpeg-commands-for-all-needs"&gt;19 ffmpeg commands for all needs | CatsWhoCode.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/0lHRqLf-D7Y" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/rnaufal#2012-08-31</feedburner:origLink></item><item><title>Links for 2012-08-30 [del.icio.us]</title><link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/BcS-9MznIuc/rnaufal</link><pubDate>Fri, 31 Aug 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/rnaufal#2012-08-30</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://tableless.com.br/"&gt;Desenvolvimento Web com XHTML e CSS - Tableless.com.br&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/BcS-9MznIuc" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/rnaufal#2012-08-30</feedburner:origLink></item><item><title>Links for 2012-08-27 [del.icio.us]</title><link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/f37TrzFZ6nk/rnaufal</link><pubDate>Tue, 28 Aug 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/rnaufal#2012-08-27</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.sudobits.com/2011/10/27/how-to-install-ruby-on-rails-in-ubuntu-11-10/"&gt;How to install Ruby on Rails in Ubuntu 11.10&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/f37TrzFZ6nk" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/rnaufal#2012-08-27</feedburner:origLink></item><item><title>Links for 2012-07-27 [del.icio.us]</title><link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/fe01d3_4ywY/rnaufal</link><pubDate>Sat, 28 Jul 2012 00:00:00 PDT</pubDate><guid isPermaLink="false">http://del.icio.us/rnaufal#2012-07-27</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.lordofthejars.com/2012/07/answering-with-mockito.html"&gt;One Jar To Rule Them All: Answering with Mockito&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/fe01d3_4ywY" height="1" width="1"/&gt;</description><feedburner:origLink>http://del.icio.us/rnaufal#2012-07-27</feedburner:origLink></item><item>
		<title>Undo svn add operation</title>
		<link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/DXCxZKA_7uw/</link>
		<comments>http://rafaelnaufal.com/blog/2012/06/20/undo-svn-add-operation/#comments</comments>
		<pubDate>Wed, 20 Jun 2012 17:09:02 +0000</pubDate>
		<dc:creator>rnaufal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[add]]></category>
		<category><![CDATA[revert]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://rafaelnaufal.com/blog/?p=375</guid>
		<description><![CDATA[If you want to cancel an svn add operation, do not use svn delete or svn remove, according to this post. You can issue the following command to undo a svn add: svn revert --recursive your_folder This tip was very useful for me today Share and Enjoy:]]></description>
			<content:encoded><![CDATA[<p>If you want to cancel an <code>svn add</code> operation, <strong>do not use svn delete or svn remove</strong>, according to this <a href="http://data.agaric.com/undo-svn-add">post</a>. You can issue the following command to undo a <code>svn add<code>:</p>
<blockquote><p align="center">svn revert --recursive your_folder</p>
</blockquote>
<p>This tip was very useful for me today <img src='http://rafaelnaufal.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
Share and Enjoy:<a rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Undo%20svn%20add%20operation%20-%20http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F&amp;title=Undo%20svn%20add%20operation&amp;bodytext=If%20you%20want%20to%20cancel%20an%20svn%20add%20operation%2C%20do%20not%20use%20svn%20delete%20or%20svn%20remove%2C%20according%20to%20this%20post.%20You%20can%20issue%20the%20following%20command%20to%20undo%20a%20svn%20add%3A%0D%0A%0D%0Asvn%20revert%20--recursive%20your_folder%0D%0A%0D%0AThis%20tip%20was%20very%20useful%20for%20me%20today%20%3A-%29%0D%0A%0D%0A" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F&amp;title=Undo%20svn%20add%20operation&amp;notes=If%20you%20want%20to%20cancel%20an%20svn%20add%20operation%2C%20do%20not%20use%20svn%20delete%20or%20svn%20remove%2C%20according%20to%20this%20post.%20You%20can%20issue%20the%20following%20command%20to%20undo%20a%20svn%20add%3A%0D%0A%0D%0Asvn%20revert%20--recursive%20your_folder%0D%0A%0D%0AThis%20tip%20was%20very%20useful%20for%20me%20today%20%3A-%29%0D%0A%0D%0A" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a rel="nofollow" target="_blank"  href="http://reddit.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F&amp;title=Undo%20svn%20add%20operation" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/reddit.png" class="sociable-img sociable-hovers" title="Reddit" alt="Reddit" /></a><a rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F&amp;t=Undo%20svn%20add%20operation" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F&amp;title=Undo%20svn%20add%20operation&amp;annotation=If%20you%20want%20to%20cancel%20an%20svn%20add%20operation%2C%20do%20not%20use%20svn%20delete%20or%20svn%20remove%2C%20according%20to%20this%20post.%20You%20can%20issue%20the%20following%20command%20to%20undo%20a%20svn%20add%3A%0D%0A%0D%0Asvn%20revert%20--recursive%20your_folder%0D%0A%0D%0AThis%20tip%20was%20very%20useful%20for%20me%20today%20%3A-%29%0D%0A%0D%0A" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F&amp;title=Undo%20svn%20add%20operation" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Undo%20svn%20add%20operation&amp;link=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/reader/link?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F&amp;title=Undo%20svn%20add%20operation&amp;srcURL=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F&amp;srcTitle=Open+minds+leads+to+freedom+Communicating+my+thoughts+on+software+development" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebuzz.png" class="sociable-img sociable-hovers" title="Google Buzz" alt="Google Buzz" /></a><a rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F&amp;t=Undo%20svn%20add%20operation" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a rel="nofollow" target="_blank"  href="http://slashdot.org/bookmark.pl?title=Undo%20svn%20add%20operation&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fundo-svn-add-operation%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/slashdot.png" class="sociable-img sociable-hovers" title="Slashdot" alt="Slashdot" /></a><br/><br/><img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/DXCxZKA_7uw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rafaelnaufal.com/blog/2012/06/20/undo-svn-add-operation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rafaelnaufal.com/blog/2012/06/20/undo-svn-add-operation/</feedburner:origLink></item>
		<item>
		<title>Checkout only one file from Subversion</title>
		<link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/a4fWdfBMlus/</link>
		<comments>http://rafaelnaufal.com/blog/2012/06/20/checkout-only-one-file-from-subversion/#comments</comments>
		<pubDate>Wed, 20 Jun 2012 16:57:40 +0000</pubDate>
		<dc:creator>rnaufal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[checkout]]></category>
		<category><![CDATA[client]]></category>
		<category><![CDATA[directory]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://rafaelnaufal.com/blog/?p=368</guid>
		<description><![CDATA[I was wondering how to checkout only one folder/file from SVN when I found this interesting tip. The command I issued to do it is the following: svn co &#60;url_of_big_dir&#62; &#60;target&#62; &#8211;depth empty The above command checkout only one versioned directory, with its content empty. Now it&#8217;s possible to add other files and directories under [...]]]></description>
			<content:encoded><![CDATA[<p>I was wondering how to checkout only one folder/file from SVN when I found this interesting <a href="http://stackoverflow.com/questions/122107/checkout-one-file-from-subversion">tip</a>. The command I issued to do it is the following:</p>
<blockquote><p align="center">svn co &lt;url_of_big_dir&gt; &lt;target&gt; &#8211;depth empty</p>
</blockquote>
<p>The above command checkout only one versioned directory, with its content empty. Now it&#8217;s possible to add other files and directories under the directory who was checked out.</p>
Share and Enjoy:<a rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Checkout%20only%20one%20file%20from%20Subversion%20-%20http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F&amp;title=Checkout%20only%20one%20file%20from%20Subversion&amp;bodytext=I%20was%20wondering%20how%20to%20checkout%20only%20one%20folder%2Ffile%20from%20SVN%20when%20I%20found%20this%20interesting%20tip.%20The%20command%20I%20issued%20to%20do%20it%20is%20the%20following%3A%0D%0A%0D%0Asvn%20co%20%26lt%3Burl_of_big_dir%26gt%3B%20%26lt%3Btarget%26gt%3B%20--depth%20empty%0D%0A%0D%0AThe%20above%20command%20checkout%20only%20one%20vers" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F&amp;title=Checkout%20only%20one%20file%20from%20Subversion&amp;notes=I%20was%20wondering%20how%20to%20checkout%20only%20one%20folder%2Ffile%20from%20SVN%20when%20I%20found%20this%20interesting%20tip.%20The%20command%20I%20issued%20to%20do%20it%20is%20the%20following%3A%0D%0A%0D%0Asvn%20co%20%26lt%3Burl_of_big_dir%26gt%3B%20%26lt%3Btarget%26gt%3B%20--depth%20empty%0D%0A%0D%0AThe%20above%20command%20checkout%20only%20one%20vers" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a rel="nofollow" target="_blank"  href="http://reddit.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F&amp;title=Checkout%20only%20one%20file%20from%20Subversion" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/reddit.png" class="sociable-img sociable-hovers" title="Reddit" alt="Reddit" /></a><a rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F&amp;t=Checkout%20only%20one%20file%20from%20Subversion" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F&amp;title=Checkout%20only%20one%20file%20from%20Subversion&amp;annotation=I%20was%20wondering%20how%20to%20checkout%20only%20one%20folder%2Ffile%20from%20SVN%20when%20I%20found%20this%20interesting%20tip.%20The%20command%20I%20issued%20to%20do%20it%20is%20the%20following%3A%0D%0A%0D%0Asvn%20co%20%26lt%3Burl_of_big_dir%26gt%3B%20%26lt%3Btarget%26gt%3B%20--depth%20empty%0D%0A%0D%0AThe%20above%20command%20checkout%20only%20one%20vers" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F&amp;title=Checkout%20only%20one%20file%20from%20Subversion" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Checkout%20only%20one%20file%20from%20Subversion&amp;link=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/reader/link?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F&amp;title=Checkout%20only%20one%20file%20from%20Subversion&amp;srcURL=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F&amp;srcTitle=Open+minds+leads+to+freedom+Communicating+my+thoughts+on+software+development" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebuzz.png" class="sociable-img sociable-hovers" title="Google Buzz" alt="Google Buzz" /></a><a rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F&amp;t=Checkout%20only%20one%20file%20from%20Subversion" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a rel="nofollow" target="_blank"  href="http://slashdot.org/bookmark.pl?title=Checkout%20only%20one%20file%20from%20Subversion&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2012%2F06%2F20%2Fcheckout-only-one-file-from-subversion%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/slashdot.png" class="sociable-img sociable-hovers" title="Slashdot" alt="Slashdot" /></a><br/><br/><img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/a4fWdfBMlus" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rafaelnaufal.com/blog/2012/06/20/checkout-only-one-file-from-subversion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rafaelnaufal.com/blog/2012/06/20/checkout-only-one-file-from-subversion/</feedburner:origLink></item>
		<item>
		<title>When to use TestNG or JUnit</title>
		<link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/akxx996lq3o/</link>
		<comments>http://rafaelnaufal.com/blog/2011/09/02/when-to-use-testng-or-junit/#comments</comments>
		<pubDate>Fri, 02 Sep 2011 21:50:10 +0000</pubDate>
		<dc:creator>rnaufal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[junit]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[testng]]></category>

		<guid isPermaLink="false">http://rafaelnaufal.com/blog/?p=361</guid>
		<description><![CDATA[There is an interesting discussion between using TestNG or JUnit on Java projects at Javalobby. It&#8217;s very worth reading. Share and Enjoy:]]></description>
			<content:encoded><![CDATA[<p>There is an interesting discussion between using <a href="http://testng.org/doc/index.html">TestNG</a> or <a href="http://www.junit.org/">JUnit</a> on Java projects at <a href="http://java.dzone.com/articles/testng-or-junit?utm_source=feedburner&#038;utm_medium=feed&#038;utm_campaign=Feed%3A+javalobby%2Ffrontpage+%28Javalobby+%2F+Java+Zone%29&#038;utm_content=Google+Reader">Javalobby</a>. It&#8217;s very worth reading.</p>
Share and Enjoy:<a rel="nofollow" target="_blank"  href="http://twitter.com/home?status=When%20to%20use%20TestNG%20or%20JUnit%20-%20http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F&amp;title=When%20to%20use%20TestNG%20or%20JUnit&amp;bodytext=There%20is%20an%20interesting%20discussion%20between%20using%20TestNG%20or%20JUnit%20on%20Java%20projects%20at%20Javalobby.%20It%27s%20very%20worth%20reading." ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F&amp;title=When%20to%20use%20TestNG%20or%20JUnit&amp;notes=There%20is%20an%20interesting%20discussion%20between%20using%20TestNG%20or%20JUnit%20on%20Java%20projects%20at%20Javalobby.%20It%27s%20very%20worth%20reading." ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a rel="nofollow" target="_blank"  href="http://reddit.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F&amp;title=When%20to%20use%20TestNG%20or%20JUnit" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/reddit.png" class="sociable-img sociable-hovers" title="Reddit" alt="Reddit" /></a><a rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F&amp;t=When%20to%20use%20TestNG%20or%20JUnit" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F&amp;title=When%20to%20use%20TestNG%20or%20JUnit&amp;annotation=There%20is%20an%20interesting%20discussion%20between%20using%20TestNG%20or%20JUnit%20on%20Java%20projects%20at%20Javalobby.%20It%27s%20very%20worth%20reading." ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F&amp;title=When%20to%20use%20TestNG%20or%20JUnit" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=When%20to%20use%20TestNG%20or%20JUnit&amp;link=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/reader/link?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F&amp;title=When%20to%20use%20TestNG%20or%20JUnit&amp;srcURL=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F&amp;srcTitle=Open+minds+leads+to+freedom+Communicating+my+thoughts+on+software+development" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebuzz.png" class="sociable-img sociable-hovers" title="Google Buzz" alt="Google Buzz" /></a><a rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F&amp;t=When%20to%20use%20TestNG%20or%20JUnit" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a rel="nofollow" target="_blank"  href="http://slashdot.org/bookmark.pl?title=When%20to%20use%20TestNG%20or%20JUnit&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F09%2F02%2Fwhen-to-use-testng-or-junit%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/slashdot.png" class="sociable-img sociable-hovers" title="Slashdot" alt="Slashdot" /></a><br/><br/><img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/akxx996lq3o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rafaelnaufal.com/blog/2011/09/02/when-to-use-testng-or-junit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rafaelnaufal.com/blog/2011/09/02/when-to-use-testng-or-junit/</feedburner:origLink></item>
		<item>
		<title>Some interesting Maven tips</title>
		<link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/uykaRfMCrk8/</link>
		<comments>http://rafaelnaufal.com/blog/2011/08/24/some-interesting-maven-tips/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 00:46:52 +0000</pubDate>
		<dc:creator>rnaufal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[modules]]></category>
		<category><![CDATA[pom]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://rafaelnaufal.com/blog/?p=353</guid>
		<description><![CDATA[Here are some Maven tips, extracted from Javalobby: Maven rf option: If your project has some modules and the build fails at one of them, it&#8217;s possible to run the build only at this module, preventing from running the entire build. You can achieve this behavior by executing this command: mvn -rf my-project clean install [...]]]></description>
			<content:encoded><![CDATA[<p>Here are some <a href="http://maven.apache.org/">Maven</a> tips, extracted from <a href="http://java.dzone.com/articles/5-maven-tips">Javalobby</a>:</p>
<ul>
<li><strong>Maven rf option:</strong> If your project has some modules and the build fails at one of them, it&#8217;s possible to run the build only at this module, preventing from running the entire build. You can achieve this behavior by executing this command:</li>
<blockquote><p>mvn -rf my-project clean install</p></blockquote>
<li><strong>Maven pl option:</strong> This option allows you to build specific modules instead of building all projects. You can execute the following command to have this behavior:</li>
<blockquote><p>mvn -pl my-project-A,my-project-B clean install</p></blockquote>
<p>This command will build only <strong>my-project-A</strong> and <strong>my-project-B</strong>.</p>
</ul>
Share and Enjoy:<a rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Some%20interesting%20Maven%20tips%20-%20http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F&amp;title=Some%20interesting%20Maven%20tips&amp;bodytext=Here%20are%20some%20Maven%20tips%2C%20extracted%20from%20Javalobby%3A%0D%0A%0D%0A%09Maven%20rf%20option%3A%20If%20your%20project%20has%20some%20modules%20and%20the%20build%20fails%20at%20one%20of%20them%2C%20it%27s%20possible%20to%20run%20the%20build%20only%20at%20this%20module%2C%20preventing%20from%20running%20the%20entire%20build.%20You%20can%20achiev" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F&amp;title=Some%20interesting%20Maven%20tips&amp;notes=Here%20are%20some%20Maven%20tips%2C%20extracted%20from%20Javalobby%3A%0D%0A%0D%0A%09Maven%20rf%20option%3A%20If%20your%20project%20has%20some%20modules%20and%20the%20build%20fails%20at%20one%20of%20them%2C%20it%27s%20possible%20to%20run%20the%20build%20only%20at%20this%20module%2C%20preventing%20from%20running%20the%20entire%20build.%20You%20can%20achiev" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a rel="nofollow" target="_blank"  href="http://reddit.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F&amp;title=Some%20interesting%20Maven%20tips" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/reddit.png" class="sociable-img sociable-hovers" title="Reddit" alt="Reddit" /></a><a rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F&amp;t=Some%20interesting%20Maven%20tips" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F&amp;title=Some%20interesting%20Maven%20tips&amp;annotation=Here%20are%20some%20Maven%20tips%2C%20extracted%20from%20Javalobby%3A%0D%0A%0D%0A%09Maven%20rf%20option%3A%20If%20your%20project%20has%20some%20modules%20and%20the%20build%20fails%20at%20one%20of%20them%2C%20it%27s%20possible%20to%20run%20the%20build%20only%20at%20this%20module%2C%20preventing%20from%20running%20the%20entire%20build.%20You%20can%20achiev" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F&amp;title=Some%20interesting%20Maven%20tips" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Some%20interesting%20Maven%20tips&amp;link=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/reader/link?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F&amp;title=Some%20interesting%20Maven%20tips&amp;srcURL=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F&amp;srcTitle=Open+minds+leads+to+freedom+Communicating+my+thoughts+on+software+development" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebuzz.png" class="sociable-img sociable-hovers" title="Google Buzz" alt="Google Buzz" /></a><a rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F&amp;t=Some%20interesting%20Maven%20tips" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a rel="nofollow" target="_blank"  href="http://slashdot.org/bookmark.pl?title=Some%20interesting%20Maven%20tips&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F24%2Fsome-interesting-maven-tips%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/slashdot.png" class="sociable-img sociable-hovers" title="Slashdot" alt="Slashdot" /></a><br/><br/><img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/uykaRfMCrk8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rafaelnaufal.com/blog/2011/08/24/some-interesting-maven-tips/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rafaelnaufal.com/blog/2011/08/24/some-interesting-maven-tips/</feedburner:origLink></item>
		<item>
		<title>Maven Eclipse plugin using project dependencies</title>
		<link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/C8tpNddiv7s/</link>
		<comments>http://rafaelnaufal.com/blog/2011/08/22/maven-eclipse-plugin/#comments</comments>
		<pubDate>Tue, 23 Aug 2011 02:09:43 +0000</pubDate>
		<dc:creator>rnaufal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[classpath]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[goal]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[project]]></category>

		<guid isPermaLink="false">http://rafaelnaufal.com/blog/?p=338</guid>
		<description><![CDATA[Some months ago I was noting the behavior of the Maven Eclipse plugin during the eclipse:eclipse goal. I realized that its default behavior is to build the dependencies based on the Eclipse projects instead of the installed packages on the repository. During development time, it&#8217;s the behavior we need, but if you want to build [...]]]></description>
			<content:encoded><![CDATA[<p>Some months ago I was noting the behavior of the Maven Eclipse plugin during the <code class="codeSyntax">eclipse:eclipse</code> goal.</p>
<p>I realized that its default behavior is to build the dependencies based on the Eclipse projects instead of the installed packages on the repository. During development time, it&#8217;s the behavior we need, but if you want to build the Eclipse files using the packages on the repository, you have to use the following command:</p>
<blockquote><p>mvn eclipse:eclipse -Declipse.useProjectReferences=false</p></blockquote>
<p>By default, the <code class="codeSyntax">useProjectReferences</code> flag is set to <code class="codeSyntax">true</code>, in other words, the plugin will create and reference the projects in Eclipse. Without it you&#8217;ll have to use <code class="codeSyntax">mvn install</code> to make changes available for dependent projects. Very interesting to note.</p>
<p><strong>Update *: </strong><em>After creating the project dependencies, you have to execute <code class="codeSyntax">mvn install</code> to make it available for <code class="codeSyntax">mvn eclipse:eclipse</code> on dependent projects for the first time.</em></p>
Share and Enjoy:<a rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Maven%20Eclipse%20plugin%20using%20project%20dependencies%20-%20http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F&amp;title=Maven%20Eclipse%20plugin%20using%20project%20dependencies&amp;bodytext=Some%20months%20ago%20I%20was%20noting%20the%20behavior%20of%20the%20Maven%20Eclipse%20plugin%20during%20the%20eclipse%3Aeclipse%20goal.%0D%0A%0D%0AI%20realized%20that%20its%20default%20behavior%20is%20to%20build%20the%20dependencies%20based%20on%20the%20Eclipse%20projects%20instead%20of%20the%20installed%20packages%20on%20the%20reposit" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F&amp;title=Maven%20Eclipse%20plugin%20using%20project%20dependencies&amp;notes=Some%20months%20ago%20I%20was%20noting%20the%20behavior%20of%20the%20Maven%20Eclipse%20plugin%20during%20the%20eclipse%3Aeclipse%20goal.%0D%0A%0D%0AI%20realized%20that%20its%20default%20behavior%20is%20to%20build%20the%20dependencies%20based%20on%20the%20Eclipse%20projects%20instead%20of%20the%20installed%20packages%20on%20the%20reposit" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a rel="nofollow" target="_blank"  href="http://reddit.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F&amp;title=Maven%20Eclipse%20plugin%20using%20project%20dependencies" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/reddit.png" class="sociable-img sociable-hovers" title="Reddit" alt="Reddit" /></a><a rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F&amp;t=Maven%20Eclipse%20plugin%20using%20project%20dependencies" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F&amp;title=Maven%20Eclipse%20plugin%20using%20project%20dependencies&amp;annotation=Some%20months%20ago%20I%20was%20noting%20the%20behavior%20of%20the%20Maven%20Eclipse%20plugin%20during%20the%20eclipse%3Aeclipse%20goal.%0D%0A%0D%0AI%20realized%20that%20its%20default%20behavior%20is%20to%20build%20the%20dependencies%20based%20on%20the%20Eclipse%20projects%20instead%20of%20the%20installed%20packages%20on%20the%20reposit" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F&amp;title=Maven%20Eclipse%20plugin%20using%20project%20dependencies" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Maven%20Eclipse%20plugin%20using%20project%20dependencies&amp;link=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/reader/link?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F&amp;title=Maven%20Eclipse%20plugin%20using%20project%20dependencies&amp;srcURL=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F&amp;srcTitle=Open+minds+leads+to+freedom+Communicating+my+thoughts+on+software+development" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebuzz.png" class="sociable-img sociable-hovers" title="Google Buzz" alt="Google Buzz" /></a><a rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F&amp;t=Maven%20Eclipse%20plugin%20using%20project%20dependencies" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a rel="nofollow" target="_blank"  href="http://slashdot.org/bookmark.pl?title=Maven%20Eclipse%20plugin%20using%20project%20dependencies&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2011%2F08%2F22%2Fmaven-eclipse-plugin%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/slashdot.png" class="sociable-img sociable-hovers" title="Slashdot" alt="Slashdot" /></a><br/><br/><img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/C8tpNddiv7s" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rafaelnaufal.com/blog/2011/08/22/maven-eclipse-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rafaelnaufal.com/blog/2011/08/22/maven-eclipse-plugin/</feedburner:origLink></item>
		<item>
		<title>Configuration classes with Enums</title>
		<link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/RTtm9NJSheU/</link>
		<comments>http://rafaelnaufal.com/blog/2010/09/23/configuration-classes-with-enums/#comments</comments>
		<pubDate>Thu, 23 Sep 2010 22:18:37 +0000</pubDate>
		<dc:creator>rnaufal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[effective java]]></category>
		<category><![CDATA[enum]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[properties]]></category>
		<category><![CDATA[singleton]]></category>

		<guid isPermaLink="false">http://rafaelnaufal.com/blog/?p=324</guid>
		<description><![CDATA[As I mentioned on my previous post, an alternative implementation to create Singleton in Java is with Enum types. Extending the idea, it is interesting to create classes which read configuration values from Properties files with Enum classes. Below is an example: public enum Configuration { HOST("host"), PORT("port"), MAIL_SERVER("mailServer"), INPUT_DIRECTORY("inputDirectory"), OUTPUT_DIRECTORY("outputDirectory"); private static Properties properties; [...]]]></description>
			<content:encoded><![CDATA[<p>As I mentioned on my previous <a href="http://rafaelnaufal.com/blog/2010/09/07/singleton-in-java-with-enum-types/">post</a>, an alternative implementation to create Singleton in Java is with Enum types.</p>
<p>Extending the idea,  it is interesting to create classes which read configuration values from <a href="http://download.oracle.com/javase/6/docs/api/java/util/Properties.html">Properties</a> files with Enum classes. Below is an example:</p>
<pre class="brush:java">
public enum Configuration {

    HOST("host"),
    PORT("port"),
    MAIL_SERVER("mailServer"),
    INPUT_DIRECTORY("inputDirectory"),
    OUTPUT_DIRECTORY("outputDirectory");

    private static Properties properties;
    static {
        properties = new Properties();
        try {
            properties.load(Configuration.class.getClassLoader().getResourceAsStream(
                "configuration.properties"));
        } catch (Exception e) {
            throw new RuntimeException("Error when loading configuration file", e);
        }
    }

    private String key;

    Configuration(String key) {
        this.key = key;
    }

    public String getKey() {
        return key;
    }

    public String getValue() {
        return properties.getProperty(key);
    }
}
</pre>
<p>Configuration classes which read values from properties files should be Singletons that are loaded once on the application startup time.</p>
<p>The Configuration values can be used this way:</p>
<pre class="brush:java">
System.out.println(Configuration.HOST.getValue());
</pre>
<p>This example shows that the key and value from properties are stored with Enum constants. They are type-safe, they can be easily accessed through code completion in your favourite IDE and they can take advantage of refactoring tools.</p>
Share and Enjoy:<a rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Configuration%20classes%20with%20Enums%20-%20http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F&amp;title=Configuration%20classes%20with%20Enums&amp;bodytext=As%20I%20mentioned%20on%20my%20previous%20post%2C%20an%20alternative%20implementation%20to%20create%20Singleton%20in%20Java%20is%20with%20Enum%20types.%0D%0A%0D%0AExtending%20the%20idea%2C%20%20it%20is%20interesting%20to%20create%20classes%20which%20read%20configuration%20values%20from%20Properties%20files%20with%20Enum%20classes.%20Bel" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F&amp;title=Configuration%20classes%20with%20Enums&amp;notes=As%20I%20mentioned%20on%20my%20previous%20post%2C%20an%20alternative%20implementation%20to%20create%20Singleton%20in%20Java%20is%20with%20Enum%20types.%0D%0A%0D%0AExtending%20the%20idea%2C%20%20it%20is%20interesting%20to%20create%20classes%20which%20read%20configuration%20values%20from%20Properties%20files%20with%20Enum%20classes.%20Bel" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a rel="nofollow" target="_blank"  href="http://reddit.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F&amp;title=Configuration%20classes%20with%20Enums" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/reddit.png" class="sociable-img sociable-hovers" title="Reddit" alt="Reddit" /></a><a rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F&amp;t=Configuration%20classes%20with%20Enums" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F&amp;title=Configuration%20classes%20with%20Enums&amp;annotation=As%20I%20mentioned%20on%20my%20previous%20post%2C%20an%20alternative%20implementation%20to%20create%20Singleton%20in%20Java%20is%20with%20Enum%20types.%0D%0A%0D%0AExtending%20the%20idea%2C%20%20it%20is%20interesting%20to%20create%20classes%20which%20read%20configuration%20values%20from%20Properties%20files%20with%20Enum%20classes.%20Bel" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F&amp;title=Configuration%20classes%20with%20Enums" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Configuration%20classes%20with%20Enums&amp;link=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/reader/link?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F&amp;title=Configuration%20classes%20with%20Enums&amp;srcURL=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F&amp;srcTitle=Open+minds+leads+to+freedom+Communicating+my+thoughts+on+software+development" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebuzz.png" class="sociable-img sociable-hovers" title="Google Buzz" alt="Google Buzz" /></a><a rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F&amp;t=Configuration%20classes%20with%20Enums" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a rel="nofollow" target="_blank"  href="http://slashdot.org/bookmark.pl?title=Configuration%20classes%20with%20Enums&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F23%2Fconfiguration-classes-with-enums%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/slashdot.png" class="sociable-img sociable-hovers" title="Slashdot" alt="Slashdot" /></a><br/><br/><img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/RTtm9NJSheU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rafaelnaufal.com/blog/2010/09/23/configuration-classes-with-enums/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://rafaelnaufal.com/blog/2010/09/23/configuration-classes-with-enums/</feedburner:origLink></item>
		<item>
		<title>Singleton in Java with Enum types</title>
		<link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/bVxCrABRd4k/</link>
		<comments>http://rafaelnaufal.com/blog/2010/09/07/singleton-in-java-with-enum-types/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 19:31:08 +0000</pubDate>
		<dc:creator>rnaufal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[effective java]]></category>
		<category><![CDATA[enum]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[joshua block]]></category>
		<category><![CDATA[serialization]]></category>
		<category><![CDATA[singleton]]></category>

		<guid isPermaLink="false">http://rafaelnaufal.com/blog/?p=312</guid>
		<description><![CDATA[Java 1.5 introduced the concept of Enum types. They are type-safe constants, which implements equals(), hashCode() and cannot be extended. Each constant can have attributes and override an abstract method created on each Enum class. Although Singletons are not encouraged, the best way to create it is using Enum types. Here is an example: public [...]]]></description>
			<content:encoded><![CDATA[<p>Java 1.5 introduced the concept of <a href="http://download.oracle.com/javase/tutorial/java/javaOO/enum.html">Enum</a> types. They are type-safe constants, which implements <code class="codeSyntax">equals()</code>, <code class="codeSyntax">hashCode()</code> and cannot be extended.  Each constant can have attributes and override an abstract method created on each <strong>Enum</strong> class.</p>
<p>Although Singletons are not encouraged, the best way to create it is using <strong>Enum</strong> types. Here is an example:</p>
<pre class="brush:java">
public enum Singleton {
    INSTANCE;

    public void sayHello() {
	   System.out.println("Hello World!");
    }
}
</pre>
<p>And then you call it this way:</p>
<pre class="brush:java">
Singleton.INSTANCE.sayHello();
</pre>
<p>Using <strong>Enums</strong> to create Singletons brings the serialization mechanism already bundled in the <strong>Enum</strong> type. This technique is described on the <a href="http://java.sun.com/docs/books/effective/">Effective Java Second Edition</a> book by Joshua Block.</p>
Share and Enjoy:<a rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Singleton%20in%20Java%20with%20Enum%20types%20-%20http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F&amp;title=Singleton%20in%20Java%20with%20Enum%20types&amp;bodytext=Java%201.5%20introduced%20the%20concept%20of%20Enum%20types.%20They%20are%20type-safe%20constants%2C%20which%20implements%20equals%28%29%2C%20hashCode%28%29%20and%20cannot%20be%20extended.%20%20Each%20constant%20can%20have%20attributes%20and%20override%20an%20abstract%20method%20created%20on%20each%20Enum%20class.%0D%0A%0D%0AAlthough%20Sing" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F&amp;title=Singleton%20in%20Java%20with%20Enum%20types&amp;notes=Java%201.5%20introduced%20the%20concept%20of%20Enum%20types.%20They%20are%20type-safe%20constants%2C%20which%20implements%20equals%28%29%2C%20hashCode%28%29%20and%20cannot%20be%20extended.%20%20Each%20constant%20can%20have%20attributes%20and%20override%20an%20abstract%20method%20created%20on%20each%20Enum%20class.%0D%0A%0D%0AAlthough%20Sing" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a rel="nofollow" target="_blank"  href="http://reddit.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F&amp;title=Singleton%20in%20Java%20with%20Enum%20types" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/reddit.png" class="sociable-img sociable-hovers" title="Reddit" alt="Reddit" /></a><a rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F&amp;t=Singleton%20in%20Java%20with%20Enum%20types" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F&amp;title=Singleton%20in%20Java%20with%20Enum%20types&amp;annotation=Java%201.5%20introduced%20the%20concept%20of%20Enum%20types.%20They%20are%20type-safe%20constants%2C%20which%20implements%20equals%28%29%2C%20hashCode%28%29%20and%20cannot%20be%20extended.%20%20Each%20constant%20can%20have%20attributes%20and%20override%20an%20abstract%20method%20created%20on%20each%20Enum%20class.%0D%0A%0D%0AAlthough%20Sing" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F&amp;title=Singleton%20in%20Java%20with%20Enum%20types" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Singleton%20in%20Java%20with%20Enum%20types&amp;link=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/reader/link?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F&amp;title=Singleton%20in%20Java%20with%20Enum%20types&amp;srcURL=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F&amp;srcTitle=Open+minds+leads+to+freedom+Communicating+my+thoughts+on+software+development" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebuzz.png" class="sociable-img sociable-hovers" title="Google Buzz" alt="Google Buzz" /></a><a rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F&amp;t=Singleton%20in%20Java%20with%20Enum%20types" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a rel="nofollow" target="_blank"  href="http://slashdot.org/bookmark.pl?title=Singleton%20in%20Java%20with%20Enum%20types&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F09%2F07%2Fsingleton-in-java-with-enum-types%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/slashdot.png" class="sociable-img sociable-hovers" title="Slashdot" alt="Slashdot" /></a><br/><br/><img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/bVxCrABRd4k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rafaelnaufal.com/blog/2010/09/07/singleton-in-java-with-enum-types/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://rafaelnaufal.com/blog/2010/09/07/singleton-in-java-with-enum-types/</feedburner:origLink></item>
		<item>
		<title>Java-Quiz: The Iterator Quiz</title>
		<link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/UW_etJKAgkc/</link>
		<comments>http://rafaelnaufal.com/blog/2010/08/03/java-quiz-the-iterator-quiz/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 21:28:26 +0000</pubDate>
		<dc:creator>rnaufal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[iterator]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[java_programming]]></category>
		<category><![CDATA[quiz]]></category>

		<guid isPermaLink="false">http://rafaelnaufal.com/blog/?p=267</guid>
		<description><![CDATA[Danilo sent us an interesting Java-Quiz from the Java Specialists&#8217; Newsletter created by Olivier Croisier. You have to insert your corrective code in place of the //FIXME comment, following these instructions: Do not modify his existing code, it&#8217;s Perfect (of course). The FIXME tag shows where you&#8217;re allowed to insert your corrective code He must [...]]]></description>
			<content:encoded><![CDATA[<p>Danilo sent us an interesting Java-Quiz from the <a href="http://www.javaspecialists.eu/archive/Issue186.html">Java Specialists&#8217; Newsletter</a> created by Olivier Croisier. You have to insert your corrective code in place of the <code style="background-color:#FEFFAF">//FIXME</code> comment, following these instructions:</p>
<ol>
<li>Do not modify his existing code, it&#8217;s Perfect (of course).</li>
<li>The FIXME tag shows where you&#8217;re allowed to insert your corrective code</li>
<li>He must be able to understand your solution when he comes back (so using Reflection is not an option).</li>
</ol>
<p>Can you find a solution for it?</p>
<pre class="brush:java">
final List&lt;String&gt; list = new ArrayList() {{ 
      add("Hello"); 
}};
final Iterator&lt;String&gt; iterator = list.iterator();
System.out.println(iterator.next());
list.add("World");
// FIXME : work here while I'm sunbathing
System.out.println(iterator.next());
</pre>
<p>Later I&#8217;ll post my attempt to solve it.</p>
Share and Enjoy:<a rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Java-Quiz%3A%20The%20Iterator%20Quiz%20-%20http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F&amp;title=Java-Quiz%3A%20The%20Iterator%20Quiz&amp;bodytext=Danilo%20sent%20us%20an%20interesting%20Java-Quiz%20from%20the%20Java%20Specialists%27%20Newsletter%20created%20by%20Olivier%20Croisier.%20You%20have%20to%20insert%20your%20corrective%20code%20in%20place%20of%20the%20%2F%2FFIXME%20comment%2C%20following%20these%20instructions%3A%0D%0A%0D%0ADo%20not%20modify%20his%20existing%20code%2C%20it%27s" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F&amp;title=Java-Quiz%3A%20The%20Iterator%20Quiz&amp;notes=Danilo%20sent%20us%20an%20interesting%20Java-Quiz%20from%20the%20Java%20Specialists%27%20Newsletter%20created%20by%20Olivier%20Croisier.%20You%20have%20to%20insert%20your%20corrective%20code%20in%20place%20of%20the%20%2F%2FFIXME%20comment%2C%20following%20these%20instructions%3A%0D%0A%0D%0ADo%20not%20modify%20his%20existing%20code%2C%20it%27s" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a rel="nofollow" target="_blank"  href="http://reddit.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F&amp;title=Java-Quiz%3A%20The%20Iterator%20Quiz" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/reddit.png" class="sociable-img sociable-hovers" title="Reddit" alt="Reddit" /></a><a rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F&amp;t=Java-Quiz%3A%20The%20Iterator%20Quiz" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F&amp;title=Java-Quiz%3A%20The%20Iterator%20Quiz&amp;annotation=Danilo%20sent%20us%20an%20interesting%20Java-Quiz%20from%20the%20Java%20Specialists%27%20Newsletter%20created%20by%20Olivier%20Croisier.%20You%20have%20to%20insert%20your%20corrective%20code%20in%20place%20of%20the%20%2F%2FFIXME%20comment%2C%20following%20these%20instructions%3A%0D%0A%0D%0ADo%20not%20modify%20his%20existing%20code%2C%20it%27s" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F&amp;title=Java-Quiz%3A%20The%20Iterator%20Quiz" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Java-Quiz%3A%20The%20Iterator%20Quiz&amp;link=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/reader/link?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F&amp;title=Java-Quiz%3A%20The%20Iterator%20Quiz&amp;srcURL=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F&amp;srcTitle=Open+minds+leads+to+freedom+Communicating+my+thoughts+on+software+development" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebuzz.png" class="sociable-img sociable-hovers" title="Google Buzz" alt="Google Buzz" /></a><a rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F&amp;t=Java-Quiz%3A%20The%20Iterator%20Quiz" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a rel="nofollow" target="_blank"  href="http://slashdot.org/bookmark.pl?title=Java-Quiz%3A%20The%20Iterator%20Quiz&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F08%2F03%2Fjava-quiz-the-iterator-quiz%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/slashdot.png" class="sociable-img sociable-hovers" title="Slashdot" alt="Slashdot" /></a><br/><br/><img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/UW_etJKAgkc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rafaelnaufal.com/blog/2010/08/03/java-quiz-the-iterator-quiz/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://rafaelnaufal.com/blog/2010/08/03/java-quiz-the-iterator-quiz/</feedburner:origLink></item>
		<item>
		<title>Eclipse Log4J template</title>
		<link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/Z-XhavO3b-4/</link>
		<comments>http://rafaelnaufal.com/blog/2010/05/09/eclipse-log4j-template/#comments</comments>
		<pubDate>Sun, 09 May 2010 19:56:23 +0000</pubDate>
		<dc:creator>rnaufal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[log4j]]></category>
		<category><![CDATA[logger]]></category>
		<category><![CDATA[templates]]></category>

		<guid isPermaLink="false">http://rafaelnaufal.com/blog/?p=253</guid>
		<description><![CDATA[My friend Bruno sent me an interesting tip on how to create a Log4J template at Eclipse. Just follow these steps: Go to Window > Preferences > Java > Editor > Templates Click New Write the string logger at the field Name (this name will be used to call the template) At the field Pattern, [...]]]></description>
			<content:encoded><![CDATA[<p>My friend <a href="http://bpfurtado.livejournal.com">Bruno</a> sent me an interesting tip on how to create a <a href="http://logging.apache.org/log4j/">Log4J</a> template at Eclipse. Just follow these steps:</p>
<ol>
<li>Go to <em>Window > Preferences > Java > Editor > Templates</em></li>
<li>Click <em>New</em></li>
<li>Write the string <strong>logger</strong> at the field <em>Name</em> (this name will be used to call the template)</li>
<li>At the field <em>Pattern</em>, write the following:<br />
<blockquote><p align="center">private static final Logger LOGGER = Logger.getLogger(${enclosing_type}.class);</p>
</blockquote>
</li>
<li>Click <em>OK</em></li>
</ol>
<p>The variable <em>${enclosing_type}</em> refers to the enclosing type name. When you are ready, write down  <strong>logger</strong> on the field class declaration to have a logger added to the class.</p>
Share and Enjoy:<a rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Eclipse%20Log4J%20template%20-%20http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F&amp;title=Eclipse%20Log4J%20template&amp;bodytext=My%20friend%20Bruno%20sent%20me%20an%20interesting%20tip%20on%20how%20to%20create%20a%20Log4J%20template%20at%20Eclipse.%20Just%20follow%20these%20steps%3A%0D%0A%0D%0A%0D%0A%09Go%20to%20Window%20%3E%20Preferences%20%3E%20Java%20%3E%20Editor%20%3E%20Templates%0D%0A%09Click%20New%0D%0A%09Write%20the%20string%20logger%20at%20the%20field%20Name%20%28this%20name%20will%20be%20" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F&amp;title=Eclipse%20Log4J%20template&amp;notes=My%20friend%20Bruno%20sent%20me%20an%20interesting%20tip%20on%20how%20to%20create%20a%20Log4J%20template%20at%20Eclipse.%20Just%20follow%20these%20steps%3A%0D%0A%0D%0A%0D%0A%09Go%20to%20Window%20%3E%20Preferences%20%3E%20Java%20%3E%20Editor%20%3E%20Templates%0D%0A%09Click%20New%0D%0A%09Write%20the%20string%20logger%20at%20the%20field%20Name%20%28this%20name%20will%20be%20" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a rel="nofollow" target="_blank"  href="http://reddit.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F&amp;title=Eclipse%20Log4J%20template" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/reddit.png" class="sociable-img sociable-hovers" title="Reddit" alt="Reddit" /></a><a rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F&amp;t=Eclipse%20Log4J%20template" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F&amp;title=Eclipse%20Log4J%20template&amp;annotation=My%20friend%20Bruno%20sent%20me%20an%20interesting%20tip%20on%20how%20to%20create%20a%20Log4J%20template%20at%20Eclipse.%20Just%20follow%20these%20steps%3A%0D%0A%0D%0A%0D%0A%09Go%20to%20Window%20%3E%20Preferences%20%3E%20Java%20%3E%20Editor%20%3E%20Templates%0D%0A%09Click%20New%0D%0A%09Write%20the%20string%20logger%20at%20the%20field%20Name%20%28this%20name%20will%20be%20" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F&amp;title=Eclipse%20Log4J%20template" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Eclipse%20Log4J%20template&amp;link=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/reader/link?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F&amp;title=Eclipse%20Log4J%20template&amp;srcURL=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F&amp;srcTitle=Open+minds+leads+to+freedom+Communicating+my+thoughts+on+software+development" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebuzz.png" class="sociable-img sociable-hovers" title="Google Buzz" alt="Google Buzz" /></a><a rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F&amp;t=Eclipse%20Log4J%20template" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a rel="nofollow" target="_blank"  href="http://slashdot.org/bookmark.pl?title=Eclipse%20Log4J%20template&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F05%2F09%2Feclipse-log4j-template%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/slashdot.png" class="sociable-img sociable-hovers" title="Slashdot" alt="Slashdot" /></a><br/><br/><img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/Z-XhavO3b-4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rafaelnaufal.com/blog/2010/05/09/eclipse-log4j-template/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rafaelnaufal.com/blog/2010/05/09/eclipse-log4j-template/</feedburner:origLink></item>
		<item>
		<title>Using Hamcrest and JUnit</title>
		<link>http://feedproxy.google.com/~r/rafaelnaufal-rss/~3/Rj36bS2gO7Q/</link>
		<comments>http://rafaelnaufal.com/blog/2010/03/15/using-hamcrest-and-junit/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 02:10:52 +0000</pubDate>
		<dc:creator>rnaufal</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[hamcrest]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[junit]]></category>
		<category><![CDATA[matchers]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[tests]]></category>

		<guid isPermaLink="false">http://rafaelnaufal.com/blog/?p=218</guid>
		<description><![CDATA[Lately I started using the core Hamcrest matchers bundled with the JUnit framework to create more readable unit tests. Hamcrest matchers were created to improve the readability of unit testing code. It&#8217;s a framework which facilitates the creation of matcher objects to match rules specified in unit tests. Some examples will let it to be [...]]]></description>
			<content:encoded><![CDATA[<p>Lately I started using the core <a href="http://junit.sourceforge.net/doc/ReleaseNotes4.4.html">Hamcrest</a> matchers bundled with the JUnit framework to create more readable unit tests.</p>
<p>Hamcrest matchers were created to improve the readability of unit testing code. It&#8217;s a framework which facilitates the creation of <em>matcher</em> objects to match rules specified in unit tests. Some examples will let it to be clearer:</p>
<pre class="gutterH"><span class="syntax0"><span class="gutter">   1 </span><span class="syntax-KEYWORD2">import</span> <span class="syntax-KEYWORD1">static</span> org.hamcrest.CoreMatchers.equalTo;
<span class="gutter">   2 </span><span class="syntax-KEYWORD2">import</span> <span class="syntax-KEYWORD1">static</span> org.hamcrest.CoreMatchers.is;
<span class="gutter">   3 </span><span class="syntax-KEYWORD2">import</span> <span class="syntax-KEYWORD1">static</span> org.junit.Assert.assertThat;
<span class="gutter">   4 </span>
<span class="gutterH">   5 </span><span class="syntax-KEYWORD4">@</span><span class="syntax-KEYWORD4">Test</span>
<span class="gutter">   6 </span><span class="syntax-KEYWORD1">public</span> <span class="syntax-KEYWORD3">void</span> <span class="syntax-FUNCTION">shouldBeTheSamePerson</span><span class="syntax-OPERATOR">(</span><span class="syntax-OPERATOR">)</span>
<span class="gutter">   7 </span><span class="syntax-OPERATOR">{</span>
<span class="gutter">   8 </span>    Person me <span class="syntax-OPERATOR">=</span> <span class="syntax-KEYWORD1">new</span> <span class="syntax-FUNCTION">Person</span><span class="syntax-OPERATOR">(</span> <span class="syntax-LITERAL1">&quot;</span><span class="syntax-LITERAL1">Rafael</span><span class="syntax-LITERAL1">&quot;</span> <span class="syntax-OPERATOR">)</span>;
<span class="gutter">   9 </span>    Person theOther <span class="syntax-OPERATOR">=</span> <span class="syntax-KEYWORD1">new</span> <span class="syntax-FUNCTION">Person</span><span class="syntax-OPERATOR">(</span> <span class="syntax-LITERAL1">&quot;</span><span class="syntax-LITERAL1">Rafael</span><span class="syntax-LITERAL1">&quot;</span> <span class="syntax-OPERATOR">)</span>;
<span class="gutterH">  10 </span>    <span class="syntax-FUNCTION">assertThat</span><span class="syntax-OPERATOR">(</span> me, <span class="syntax-FUNCTION">is</span><span class="syntax-OPERATOR">(</span> theOther <span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">)</span>;
<span class="gutter">  11 </span><span class="syntax-OPERATOR">}</span>
<span class="gutter">  12 </span>
<span class="gutter">  13 </span><span class="syntax-KEYWORD4">@</span><span class="syntax-KEYWORD4">Test</span>
<span class="gutter">  14 </span><span class="syntax-KEYWORD1">public</span> <span class="syntax-KEYWORD3">void</span> <span class="syntax-FUNCTION">shouldHaveFixedSizeNumbers</span><span class="syntax-OPERATOR">(</span><span class="syntax-OPERATOR">)</span>
<span class="gutterH">  15 </span><span class="syntax-OPERATOR">{</span>
<span class="gutter">  16 </span>    List<span class="syntax-OPERATOR">&lt;</span>Integer<span class="syntax-OPERATOR">&gt;</span> numbers <span class="syntax-OPERATOR">=</span> Arrays.<span class="syntax-FUNCTION">asList</span><span class="syntax-OPERATOR">(</span> <span class="syntax-DIGIT">1</span>, <span class="syntax-DIGIT">2</span>, <span class="syntax-DIGIT">3</span>, <span class="syntax-DIGIT">4</span>, <span class="syntax-DIGIT">5</span> <span class="syntax-OPERATOR">)</span>;
<span class="gutter">  17 </span>    <span class="syntax-FUNCTION">assertThat</span><span class="syntax-OPERATOR">(</span> numbers.<span class="syntax-FUNCTION">size</span><span class="syntax-OPERATOR">(</span><span class="syntax-OPERATOR">)</span>, <span class="syntax-FUNCTION">is</span><span class="syntax-OPERATOR">(</span> <span class="syntax-FUNCTION">equalTo</span><span class="syntax-OPERATOR">(</span> <span class="syntax-DIGIT">5</span> <span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">)</span>;
<span class="gutter">  18 </span><span class="syntax-OPERATOR">}</span>
</span></pre>
<p>The first example checks if one <code>Person</code> object is equal to another using the <code>Object equals </code>method, which was overridden in the <code>Person</code> class. The <code>is</code> syntax defines a matcher which is a shorthand to <code>is(equalTo(value))</code>.  The second one uses the <code>is(equalTo(value))</code> matcher to check the size of an integer list of fixed size numbers. The <code>assertThat</code> method is used in conjunction with the <code>is(equalTo(value))</code> matcher, which makes the test sentence very human readable.</p>
<p>An interesting thing is the possibility to create a custom matcher, like this one which tests if a given list only has even numbers:</p>
<pre class="gutterH"><span class="syntax0"><span class="gutter">   1 </span><span class="syntax-KEYWORD1">public</span> <span class="syntax-KEYWORD3">class</span> AreEvenNumbers <span class="syntax-KEYWORD1">extends</span> TypeSafeMatcher<span class="syntax-OPERATOR">&lt;</span>Collection<span class="syntax-OPERATOR">&lt;</span>Integer<span class="syntax-OPERATOR">&gt;</span><span class="syntax-OPERATOR">&gt;</span> <span class="syntax-OPERATOR">{</span>
<span class="gutter">   2 </span>
<span class="gutter">   3 </span>    <span class="syntax-KEYWORD4">@</span><span class="syntax-KEYWORD4">Override</span>
<span class="gutter">   4 </span>    <span class="syntax-KEYWORD1">public</span> <span class="syntax-KEYWORD3">boolean</span> <span class="syntax-FUNCTION">matchesSafely</span><span class="syntax-OPERATOR">(</span>Collection<span class="syntax-OPERATOR">&lt;</span>Integer<span class="syntax-OPERATOR">&gt;</span> numbers<span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">{</span>
<span class="gutterH">   5 </span>        <span class="syntax-KEYWORD1">for</span> <span class="syntax-OPERATOR">(</span>Integer number : numbers<span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">{</span>
<span class="gutter">   6 </span>            <span class="syntax-KEYWORD1">if</span> <span class="syntax-OPERATOR">(</span>number <span class="syntax-OPERATOR">%</span> <span class="syntax-DIGIT">2</span> <span class="syntax-OPERATOR">!</span><span class="syntax-OPERATOR">=</span> <span class="syntax-DIGIT">0</span><span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">{</span>
<span class="gutter">   7 </span>                <span class="syntax-KEYWORD1">return</span> <span class="syntax-LITERAL2">false</span>;
<span class="gutter">   8 </span>            <span class="syntax-OPERATOR">}</span>
<span class="gutter">   9 </span>        <span class="syntax-OPERATOR">}</span>
<span class="gutterH">  10 </span>        <span class="syntax-KEYWORD1">return</span> <span class="syntax-LITERAL2">true</span>;
<span class="gutter">  11 </span>    <span class="syntax-OPERATOR">}</span>
<span class="gutter">  12 </span>
<span class="gutter">  13 </span>    <span class="syntax-KEYWORD4">@</span><span class="syntax-KEYWORD4">Override</span>
<span class="gutter">  14 </span>    <span class="syntax-KEYWORD1">public</span> <span class="syntax-KEYWORD3">void</span> <span class="syntax-FUNCTION">describeTo</span><span class="syntax-OPERATOR">(</span>Description description<span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">{</span>
<span class="gutterH">  15 </span>        description.<span class="syntax-FUNCTION">appendText</span><span class="syntax-OPERATOR">(</span><span class="syntax-LITERAL1">&quot;</span><span class="syntax-LITERAL1">even</span><span class="syntax-LITERAL1"> </span><span class="syntax-LITERAL1">numbers</span><span class="syntax-LITERAL1">&quot;</span><span class="syntax-OPERATOR">)</span>;
<span class="gutter">  16 </span>    <span class="syntax-OPERATOR">}</span>
<span class="gutter">  17 </span>
<span class="gutter">  18 </span>    <span class="syntax-KEYWORD4">@</span><span class="syntax-KEYWORD4">Factory</span>
<span class="gutter">  19 </span>    <span class="syntax-KEYWORD1">public</span> <span class="syntax-KEYWORD1">static</span> <span class="syntax-OPERATOR">&lt;</span>T<span class="syntax-OPERATOR">&gt;</span> Matcher<span class="syntax-OPERATOR">&lt;</span>Collection<span class="syntax-OPERATOR">&lt;</span>Integer<span class="syntax-OPERATOR">&gt;</span><span class="syntax-OPERATOR">&gt;</span> <span class="syntax-FUNCTION">evenNumbers</span><span class="syntax-OPERATOR">(</span><span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">{</span>
<span class="gutterH">  20 </span>        <span class="syntax-KEYWORD1">return</span> <span class="syntax-KEYWORD1">new</span> <span class="syntax-FUNCTION">AreEvenNumbers</span><span class="syntax-OPERATOR">(</span><span class="syntax-OPERATOR">)</span>;
<span class="gutter">  21 </span>    <span class="syntax-OPERATOR">}</span>
<span class="gutter">  22 </span><span class="syntax-OPERATOR">}</span>
</span></pre>
<p>And below are two tests which uses the <code>AreEvenNumbers</code> custom matcher:</p>
<pre class="gutterH"><span class="syntax0"><span class="gutter">   1 </span><span class="syntax-KEYWORD2">import</span> <span class="syntax-KEYWORD1">static</span> org.hamcrest.CoreMatchers.is;
<span class="gutter">   2 </span><span class="syntax-KEYWORD2">import</span> <span class="syntax-KEYWORD1">static</span> org.junit.Assert.assertThat;
<span class="gutter">   3 </span><span class="syntax-KEYWORD2">import</span> <span class="syntax-KEYWORD1">static</span> br.com.rafael.hamcrest.AreEvenNumbers.evenNumbers;
<span class="gutter">   4 </span>
<span class="gutterH">   5 </span><span class="syntax-KEYWORD4">@</span><span class="syntax-KEYWORD4">Test</span>
<span class="gutter">   6 </span><span class="syntax-KEYWORD1">public</span> <span class="syntax-KEYWORD3">void</span> <span class="syntax-FUNCTION">shouldHaveOnlyEvenNumbers</span><span class="syntax-OPERATOR">(</span><span class="syntax-OPERATOR">)</span>
<span class="gutter">   7 </span><span class="syntax-OPERATOR">{</span>
<span class="gutter">   8 </span>    List<span class="syntax-OPERATOR">&lt;</span>Integer<span class="syntax-OPERATOR">&gt;</span> numbers <span class="syntax-OPERATOR">=</span> Arrays.<span class="syntax-FUNCTION">asList</span><span class="syntax-OPERATOR">(</span> <span class="syntax-DIGIT">2</span>, <span class="syntax-DIGIT">4</span>, <span class="syntax-DIGIT">6</span>, <span class="syntax-DIGIT">8</span>, <span class="syntax-DIGIT">10</span> <span class="syntax-OPERATOR">)</span>;
<span class="gutter">   9 </span>    <span class="syntax-FUNCTION">assertThat</span><span class="syntax-OPERATOR">(</span> numbers, <span class="syntax-FUNCTION">is</span><span class="syntax-OPERATOR">(</span> <span class="syntax-FUNCTION">evenNumbers</span><span class="syntax-OPERATOR">(</span><span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">)</span>;
<span class="gutterH">  10 </span><span class="syntax-OPERATOR">}</span>
<span class="gutter">  11 </span>
<span class="gutter">  12 </span><span class="syntax-KEYWORD4">@</span><span class="syntax-KEYWORD4">Test</span>
<span class="gutter">  13 </span><span class="syntax-KEYWORD1">public</span> <span class="syntax-KEYWORD3">void</span> <span class="syntax-FUNCTION">shouldNotHaveOddNumbers</span><span class="syntax-OPERATOR">(</span><span class="syntax-OPERATOR">)</span>
<span class="gutter">  14 </span><span class="syntax-OPERATOR">{</span>
<span class="gutterH">  15 </span>    List<span class="syntax-OPERATOR">&lt;</span>Integer<span class="syntax-OPERATOR">&gt;</span> numbers <span class="syntax-OPERATOR">=</span> Arrays.<span class="syntax-FUNCTION">asList</span><span class="syntax-OPERATOR">(</span> <span class="syntax-DIGIT">1</span>, <span class="syntax-DIGIT">2</span>, <span class="syntax-DIGIT">4</span>, <span class="syntax-DIGIT">6</span>, <span class="syntax-DIGIT">8</span>, <span class="syntax-DIGIT">10</span> <span class="syntax-OPERATOR">)</span>;
<span class="gutter">  16 </span>    <span class="syntax-FUNCTION">assertThat</span><span class="syntax-OPERATOR">(</span> numbers, <span class="syntax-FUNCTION">not</span><span class="syntax-OPERATOR">(</span> <span class="syntax-FUNCTION">evenNumbers</span><span class="syntax-OPERATOR">(</span><span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">)</span> <span class="syntax-OPERATOR">)</span>;
<span class="gutter">  17 </span><span class="syntax-OPERATOR">}</span>
</span></pre>
<p>These two tests use the static factory method <code>evenNumbers</code> to instantiate the matcher on the test code. Not the use of the <code>not</code> matcher on the <code>shouldNotHaveOddNumbers</code> test to assert that no odd numbers are present on the given list. All tests use the <a href="http://java.sun.com/j2se/1.5.0/docs/guide/language/static-import.html">static import</a> feature, which turns the test not clean and not cluttered with the class qualification.</p>
<p>I haven&#8217;t experienced the other common matchers on unit testing code, like the Beans, Collections and Number ones. I think they turn the tests more readable, clean and easy to change. And you? Have you ever used Hamcrest matcher? If you have other examples of using it, post them here!</p>
<p><em><strong>Updated: </strong</em>Static imports were added to the testing code.</p>
Share and Enjoy:<a rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Using%20Hamcrest%20and%20JUnit%20-%20http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F&amp;title=Using%20Hamcrest%20and%20JUnit&amp;bodytext=Lately%20I%20started%20using%20the%20core%20Hamcrest%20matchers%20bundled%20with%20the%20JUnit%20framework%20to%20create%20more%20readable%20unit%20tests.%0D%0A%0D%0AHamcrest%20matchers%20were%20created%20to%20improve%20the%20readability%20of%20unit%20testing%20code.%20It%27s%20a%20framework%20which%20facilitates%20the%20creation%20" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F&amp;title=Using%20Hamcrest%20and%20JUnit&amp;notes=Lately%20I%20started%20using%20the%20core%20Hamcrest%20matchers%20bundled%20with%20the%20JUnit%20framework%20to%20create%20more%20readable%20unit%20tests.%0D%0A%0D%0AHamcrest%20matchers%20were%20created%20to%20improve%20the%20readability%20of%20unit%20testing%20code.%20It%27s%20a%20framework%20which%20facilitates%20the%20creation%20" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a rel="nofollow" target="_blank"  href="http://reddit.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F&amp;title=Using%20Hamcrest%20and%20JUnit" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/reddit.png" class="sociable-img sociable-hovers" title="Reddit" alt="Reddit" /></a><a rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F&amp;t=Using%20Hamcrest%20and%20JUnit" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F&amp;title=Using%20Hamcrest%20and%20JUnit&amp;annotation=Lately%20I%20started%20using%20the%20core%20Hamcrest%20matchers%20bundled%20with%20the%20JUnit%20framework%20to%20create%20more%20readable%20unit%20tests.%0D%0A%0D%0AHamcrest%20matchers%20were%20created%20to%20improve%20the%20readability%20of%20unit%20testing%20code.%20It%27s%20a%20framework%20which%20facilitates%20the%20creation%20" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F&amp;title=Using%20Hamcrest%20and%20JUnit" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Using%20Hamcrest%20and%20JUnit&amp;link=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a rel="nofollow" target="_blank"  href="http://www.google.com/reader/link?url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F&amp;title=Using%20Hamcrest%20and%20JUnit&amp;srcURL=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F&amp;srcTitle=Open+minds+leads+to+freedom+Communicating+my+thoughts+on+software+development" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/googlebuzz.png" class="sociable-img sociable-hovers" title="Google Buzz" alt="Google Buzz" /></a><a rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F&amp;t=Using%20Hamcrest%20and%20JUnit" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a rel="nofollow" target="_blank"  href="http://slashdot.org/bookmark.pl?title=Using%20Hamcrest%20and%20JUnit&amp;url=http%3A%2F%2Frafaelnaufal.com%2Fblog%2F2010%2F03%2F15%2Fusing-hamcrest-and-junit%2F" ><img src="http://rafaelnaufal.com/blog/wp-content/plugins/sociable-30/images/default/16/slashdot.png" class="sociable-img sociable-hovers" title="Slashdot" alt="Slashdot" /></a><br/><br/><img src="http://feeds.feedburner.com/~r/rafaelnaufal-rss/~4/Rj36bS2gO7Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://rafaelnaufal.com/blog/2010/03/15/using-hamcrest-and-junit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://rafaelnaufal.com/blog/2010/03/15/using-hamcrest-and-junit/</feedburner:origLink></item>
	</channel>
</rss>
