<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Duke&#039;s little B&#039;s Blog</title>
	<atom:link href="http://dukeslittleb.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dukeslittleb.wordpress.com</link>
	<description>An open source developer&#039;s perspective - by Thomas Weber</description>
	<lastBuildDate>Wed, 16 Mar 2011 16:14:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='dukeslittleb.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://1.gravatar.com/blavatar/585b08af9e919a42920c44c15f9a81c8?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>Duke&#039;s little B&#039;s Blog</title>
		<link>http://dukeslittleb.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://dukeslittleb.wordpress.com/osd.xml" title="Duke&#039;s little B&#039;s Blog" />
	<atom:link rel='hub' href='http://dukeslittleb.wordpress.com/?pushpress=hub'/>
		<item>
		<title>pulse 0.7 pre 3 has been released</title>
		<link>http://dukeslittleb.wordpress.com/2010/03/30/pulse-0-7-pre-3-has-been-released/</link>
		<comments>http://dukeslittleb.wordpress.com/2010/03/30/pulse-0-7-pre-3-has-been-released/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 23:09:09 +0000</pubDate>
		<dc:creator>dukeslittleb</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[pulse]]></category>
		<category><![CDATA[opensource]]></category>

		<guid isPermaLink="false">http://dukeslittleb.wordpress.com/?p=180</guid>
		<description><![CDATA[Last weekend the third preview release of pulse 0.7 has been published. It includes a basic build system built upon Apache Ant to keep user edited files separate from those delivered with the binary distribution. This release addresses numerous compatibility issues and also introduces significant performance improvements. All included libraries have also been updated to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=180&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Last weekend the <a href="http://pulse.torweg.org">third preview release of pulse 0.7</a> has been published.<br />
It includes a basic build system built upon Apache Ant to keep user edited files separate from those delivered with the binary distribution. This release addresses numerous compatibility issues and also introduces significant performance improvements. All included libraries have also been updated to their current stable versions. Moreover, the size of the binary distribution has again been significantly reduced.</p>
<br />Filed under: <a href='http://dukeslittleb.wordpress.com/category/java/'>java</a>, <a href='http://dukeslittleb.wordpress.com/category/open-source/'>Open Source</a>, <a href='http://dukeslittleb.wordpress.com/category/open-source/pulse-open-source/'>pulse</a> Tagged: <a href='http://dukeslittleb.wordpress.com/tag/java/'>java</a>, <a href='http://dukeslittleb.wordpress.com/tag/opensource/'>opensource</a>, <a href='http://dukeslittleb.wordpress.com/tag/pulse/'>pulse</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dukeslittleb.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dukeslittleb.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dukeslittleb.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dukeslittleb.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dukeslittleb.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dukeslittleb.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dukeslittleb.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dukeslittleb.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dukeslittleb.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dukeslittleb.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dukeslittleb.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dukeslittleb.wordpress.com/180/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dukeslittleb.wordpress.com/180/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dukeslittleb.wordpress.com/180/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=180&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dukeslittleb.wordpress.com/2010/03/30/pulse-0-7-pre-3-has-been-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>49.589727 10.964672</georss:point>
		<geo:lat>49.589727</geo:lat>
		<geo:long>10.964672</geo:long>
		<media:content url="http://1.gravatar.com/avatar/9481278ee655ffd79fa14455ce9989c9?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">dukeslittleb</media:title>
		</media:content>
	</item>
		<item>
		<title>How to migrate an SVN repository without shell access to the existing repository</title>
		<link>http://dukeslittleb.wordpress.com/2010/03/15/how-to-migrate-an-svn-repository-without-shell-access-to-the-existing-repository/</link>
		<comments>http://dukeslittleb.wordpress.com/2010/03/15/how-to-migrate-an-svn-repository-without-shell-access-to-the-existing-repository/#comments</comments>
		<pubDate>Mon, 15 Mar 2010 22:30:39 +0000</pubDate>
		<dc:creator>dukeslittleb</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[pulse]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://dukeslittleb.wordpress.com/?p=166</guid>
		<description><![CDATA[A pratical experience moving from dev.java.net to Sourceforge. We decided to move the SVN repository of our project &#8220;pulse &#8211; the web application framework&#8221; from dev.java.net to Sourceforge. However dev.java.net does not provide shell access to the SVN host, so a simple svnadmin --dump / svnadmin --load move was not possible. However, we wanted to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=166&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>A pratical experience moving from dev.java.net to Sourceforge.</h3>
<p>We decided to move the SVN repository of our project &#8220;<a href="http://pulse.torweg.org">pulse &#8211; the web application framework</a>&#8221; from dev.java.net to Sourceforge. However dev.java.net does not provide shell access to the SVN host, so a simple <code>svnadmin --dump / svnadmin --load</code> move was not possible. However, we wanted to keep the complete SVN history, so we started looking for a tool.</p>
<h3>rsvndump to the rescue.</h3>
<p>Thankfully, <a href="https://sourceforge.net/users/saubue">Jonas Gehring (saubue)</a> has developed the great <a href="http://sourceforge.net/projects/rsvndump/">rsvndump</a> which saved us a lot of worries. It was painlessly installed on a clean Debian Lenny and off we go:<br />
<code><br />
rsvndump -u username -p secret https://pulse.dev.java.net/svn/pulse | gzip &gt; svndump.gz<br />
</code><br />
The above command line creates the SVN dump from the remote server and compresses it.</p>
<h3>Adding the dump to the Sourceforge SVN.</h3>
<p>Actually adding the dump to Sourceforge&#8217;s SVN is very simple.<br />
First, you have to connect to <a href="http://sourceforge.net/apps/trac/sourceforge/wiki/Shell%20service">Sourceforge&#8217;s Interactive Shell Service</a>. I used PuTTY to connect to the service which is <a href="http://sourceforge.net/apps/trac/sourceforge/wiki/Shell%20service#Puttyclient">clearly documented</a>.<br />
Second, upload the dump file to your personal home directory on the Sourceforge server via SFTP:</p>
<ul>
<li>Host name: shell.sourceforge.net</li>
<li>User / Password: your user name and password from Sourceforge</li>
</ul>
<p>Usually your SFTP client should start directly in your home directory. So just upload the dump.</p>
<p>Once the upload has completed go back to the shell service make sure you are in your home directory by typing &#8220;pwd&#8221; and unzip the dump with gunzip.</p>
<p>Then the actual import starts in five easy steps:</p>
<ol>
<li><code>adminrepo --checkout svn</code> will copy your repository to <code>/svnroot/UNIX-NAME</code> so you can work with it from there.</li>
<li>Then remove your clone copy of your current repo with<code> rm -rf /svnroot/UNIX-NAME/*</code></li>
<li>Create a new repo with <code>svnadmin create /svnroot/UNIX-NAME/</code></li>
<li>Import the dump with <code>svnadmin load /svnroot/UNIX-NAME &lt; svndump</code></li>
<li>Save your changes using <code>adminrepo --save</code></li>
</ol>
<p>And that&#8217;s it! :)</p>
<br />Filed under: <a href='http://dukeslittleb.wordpress.com/category/misc/'>Misc</a>, <a href='http://dukeslittleb.wordpress.com/category/open-source/'>Open Source</a>, <a href='http://dukeslittleb.wordpress.com/category/open-source/pulse-open-source/'>pulse</a> Tagged: <a href='http://dukeslittleb.wordpress.com/tag/opensource/'>opensource</a>, <a href='http://dukeslittleb.wordpress.com/tag/tutorial/'>tutorial</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dukeslittleb.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dukeslittleb.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dukeslittleb.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dukeslittleb.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dukeslittleb.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dukeslittleb.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dukeslittleb.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dukeslittleb.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dukeslittleb.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dukeslittleb.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dukeslittleb.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dukeslittleb.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dukeslittleb.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dukeslittleb.wordpress.com/166/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=166&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dukeslittleb.wordpress.com/2010/03/15/how-to-migrate-an-svn-repository-without-shell-access-to-the-existing-repository/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>49.589727 10.964672</georss:point>
		<geo:lat>49.589727</geo:lat>
		<geo:long>10.964672</geo:long>
		<media:content url="http://1.gravatar.com/avatar/9481278ee655ffd79fa14455ce9989c9?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">dukeslittleb</media:title>
		</media:content>
	</item>
		<item>
		<title>Nailing it down &#8211; or at least trying to</title>
		<link>http://dukeslittleb.wordpress.com/2010/03/03/nailing-it-down-or-at-least-trying-to/</link>
		<comments>http://dukeslittleb.wordpress.com/2010/03/03/nailing-it-down-or-at-least-trying-to/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 09:43:20 +0000</pubDate>
		<dc:creator>dukeslittleb</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[Misc]]></category>

		<guid isPermaLink="false">http://dukeslittleb.wordpress.com/?p=158</guid>
		<description><![CDATA[I tried to run a webapp with the current JDK 6 Update 18 on both Tomcat 6 and Jetty 6. The app started fine and after the second click in the browser the JVM started to pump up its heap while putting full load on one CPU core.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=158&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>Is JDK 6 Update 18 having a memory bug (at least on Windows)</h3>
<p>Yesterday, I had a very strange issue with a web application of ours. I tried to run it with the current JDK 6 Update 18 on both Tomcat 6 and Jetty 6. The app started fine and after the second click in the browser the JVM started to pump up its heap while putting full load on one CPU core.<br />
At first I thought a recent update in the webapp might have introduced a nice memory leak, but strange enough the very same web application ran fine on Linux (Debian Lenny) using OpenJDK 6.<br />
Next thing I tried, was to downgrade to the previous release of JDK 6 (Update 17): et voilà, the app was behaving as usual. Even after hours of running and using it, the heap was keeping its bounds.<br />
Tests with JDK 5 also showed that the web application seems to be okay.</p>
<p>I tried to nail down the issue using Eclipse&#8217;s TPTP and profiled the application, but the JVM was crashing too fast to get any useful results&#8230;</p>
<h3>Further testing</h3>
<p>After futher test today, I realised that the click in the browser was actually the third request to the webapp. A Flash movie on the first page was doing the second, asking for an XML configuration. That made me think &#8211; what&#8217;s different between the two requests?<br />
Well actually the main difference was the method of output: one request delivered HTML and the other plain XML.</p>
<h3>Beware of old versions</h3>
<p>The HTML output was generated with an XSLT processor bundled with the webapp &#8211; and that version was already two years old. Usually, I would say that should make it safe to use, but in my case it was the problem. After upgrading to the latest version and adapting a view XSL tweaks no longer available in the current version, the app was running fine again.</p>
<p>My, my &#8211; that&#8217;s one of those days&#8230;</p>
<br />Filed under: <a href='http://dukeslittleb.wordpress.com/category/java/'>java</a>, <a href='http://dukeslittleb.wordpress.com/category/misc/'>Misc</a> Tagged: <a href='http://dukeslittleb.wordpress.com/tag/java/'>java</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dukeslittleb.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dukeslittleb.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dukeslittleb.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dukeslittleb.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dukeslittleb.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dukeslittleb.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dukeslittleb.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dukeslittleb.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dukeslittleb.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dukeslittleb.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dukeslittleb.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dukeslittleb.wordpress.com/158/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dukeslittleb.wordpress.com/158/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dukeslittleb.wordpress.com/158/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=158&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dukeslittleb.wordpress.com/2010/03/03/nailing-it-down-or-at-least-trying-to/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>49.589727 10.964672</georss:point>
		<geo:lat>49.589727</geo:lat>
		<geo:long>10.964672</geo:long>
		<media:content url="http://1.gravatar.com/avatar/9481278ee655ffd79fa14455ce9989c9?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">dukeslittleb</media:title>
		</media:content>
	</item>
		<item>
		<title>Nice video tutorial to Mozilla&#8217;s JetPack</title>
		<link>http://dukeslittleb.wordpress.com/2010/01/03/nice-video-tutorial-to-mozillas-jetpack/</link>
		<comments>http://dukeslittleb.wordpress.com/2010/01/03/nice-video-tutorial-to-mozillas-jetpack/#comments</comments>
		<pubDate>Sun, 03 Jan 2010 18:59:09 +0000</pubDate>
		<dc:creator>dukeslittleb</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[webdevelopment]]></category>

		<guid isPermaLink="false">http://dukeslittleb.wordpress.com/?p=156</guid>
		<description><![CDATA[I just stumbled across this nice to tutorial to JetPack. This might become a very interesting project&#8230; Posted in Misc, Open Source Tagged: firefox, webdevelopment<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=156&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I just stumbled across this <a href="http://vimeo.com/4752576">nice to tutorial to JetPack</a>. This might become a very interesting project&#8230;</p>
<br />Posted in Misc, Open Source Tagged: firefox, webdevelopment <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dukeslittleb.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dukeslittleb.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dukeslittleb.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dukeslittleb.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dukeslittleb.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dukeslittleb.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dukeslittleb.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dukeslittleb.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dukeslittleb.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dukeslittleb.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dukeslittleb.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dukeslittleb.wordpress.com/156/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dukeslittleb.wordpress.com/156/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dukeslittleb.wordpress.com/156/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=156&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dukeslittleb.wordpress.com/2010/01/03/nice-video-tutorial-to-mozillas-jetpack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>49.589727 10.964672</georss:point>
		<geo:lat>49.589727</geo:lat>
		<geo:long>10.964672</geo:long>
		<media:content url="http://1.gravatar.com/avatar/9481278ee655ffd79fa14455ce9989c9?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">dukeslittleb</media:title>
		</media:content>
	</item>
		<item>
		<title>DIY: Java Dependency Injection (Part 4)</title>
		<link>http://dukeslittleb.wordpress.com/2009/11/23/diy-java-dependency-injection-part-4/</link>
		<comments>http://dukeslittleb.wordpress.com/2009/11/23/diy-java-dependency-injection-part-4/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 22:12:23 +0000</pubDate>
		<dc:creator>dukeslittleb</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[dependency injection]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[jaxb]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://dukeslittleb.wordpress.com/?p=134</guid>
		<description><![CDATA[Creating a simple dependency injection framework with custom annotations, reflections and JAXB You can download the complete source as an Eclipse Java project. Already featured in the previous parts In the first part we have created the @Injected annotation, an Interface for our units of work (IUnitOfWork) and skeletons for the Injector and the Executor. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=134&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Creating a simple dependency injection framework with custom annotations, reflections and JAXB</strong><br />
You can <a href="http://www.mediafire.com/file/muwj2wqijzm/diy-dependency-injection-with-java.zip">download the complete source as an Eclipse Java project</a>.</p>
<h3>Already featured in the previous parts</h3>
<p>In the <a href="/2009/11/03/diy-java-dependency-injection-part-1/">first part</a> we have created the @Injected annotation, an Interface for our units of work (IUnitOfWork) and skeletons for the Injector and the Executor. The <a href="/2009/11/04/diy-java-dependency-injection-part-2/">second part</a> was all about gathering the Java reflections basics to process the annotated classes. Finally a basic introduction to JAXB has been featured in the <a href="/2009/11/12/diy-java-dependency-injection-part-3/">third part</a>. Today we will put it all together.</p>
<h3>A base directory for all configurations</h3>
<p>You already know how to create configuration instance from XML via JAXB and how to find annotated fields. Next we will define a mechanism to resolve the XML files and inject the instance into the annotated field. For our little example, we define that all configurations will be place in one directory &#8220;conf&#8221; on the root level of out project. The naming convention for the configuration XML files is <code>canonical name of the field declaration + .xml</code>. This allows an easy resolving of the configurations.<br />
Let&#8217;s improve our Injector to use the &#8220;conf&#8221; director and to inject the unmarshaled instances<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

import java.io.File;
import java.lang.reflect.Field;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;

public class Injector {

	private static final File CONFIG_DIRECTORY;

	private static final JAXBContext JAXB_CONTEXT;

	static {
		// get the configuration directory
		File f = new File(&quot;conf&quot;);
		if (!f.exists()) {
			throw new RuntimeException(f.getAbsolutePath() + &quot; does not exist&quot;);
		} else if (!f.isDirectory()) {
			throw new RuntimeException(f.getAbsolutePath()
					+ &quot; is not a directory&quot;);
		} else if (!f.canRead()) {
			throw new RuntimeException(f.getAbsolutePath() + &quot; is not readable&quot;);
		}
		CONFIG_DIRECTORY = f;
		try {
			// set up th JAXB context
			JAXB_CONTEXT = JAXBContext
					.newInstance(&quot;dukeslittleb.tutorials.ioc&quot;);
		} catch (JAXBException e) {
			throw new RuntimeException(e);
		}
	}

	public static final IUnitOfWork setUp(final IUnitOfWork unit) {

		System.out.println(&quot;Injector: setting up &quot;
				+ unit.getClass().getCanonicalName());
		for (Field field : unit.getClass().getDeclaredFields()) {
			// check if field is annotated
			if (field.isAnnotationPresent(Injected.class)) {
				System.out
						.println(&quot;  Trying to inject into &quot; + field.getName());
				field.setAccessible(true);
				try {
					// inject into field
					field.set(unit, JAXB_CONTEXT.createUnmarshaller()
							.unmarshal(
									new File(CONFIG_DIRECTORY, field.getType()
											.getCanonicalName()
											+ &quot;.xml&quot;)));
				} catch (Exception e) {
					throw new RuntimeException(e);
				}
				field.setAccessible(false);
			}
		}
		return unit;
	}
}
</pre></p>
<h3>Adding some live to the Executor</h3>
<p>Now let&#8217;s get back to the Executor from part 1 and apply a few changes:<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

public class Executor implements IUnitOfWork {

	@Injected
	private IConfiguration conf;

	public void run() {
		System.out.println(&quot;running &quot; + this + &quot; with a configuration of type &quot;
				+ conf.getClass().getCanonicalName());
	}
}
</pre><br />
And add a configuration file into conf named &#8220;dukeslittleb.tutorials.ioc.IConfguration.xml&#8221;:<br />
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
&lt;complex-executor-config&gt;
	&lt;sub-tasks&gt;
		&lt;class&gt;dukeslittleb.tutorials.ioc. HelloWorldUnit&lt;/class&gt;
		&lt;class&gt;dukeslittleb.tutorials.ioc. HelloConfigurationUnit&lt;/class&gt;
	&lt;/sub-tasks&gt;
&lt;/complex-executor-config&gt;
</pre><br />
Now run IOCSampleApp. Your output should look like:</p>
<pre>
Injector: setting up dukeslittleb.tutorials.ioc.Executor
  Trying to inject into conf
running dukeslittleb.tutorials.ioc.Executor@1ad77a7 with a
configuration of type
dukeslittleb.tutorials.ioc.ComplexExecutorConfig
</pre>
<p>So far, so good.</p>
<h3>Spice it up!</h3>
<p>Until now the Excutor behaves a bit static. What we want is some more injections. To get that we will first create another interface which extends IConfiguration: IHasSubTasks (the name says it all).<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

import java.util.Collection;

public interface IHasSubTasks extends IConfiguration {

	Collection&lt;IUnitOfWork&gt; getSubTasks();
		
}
</pre><br />
Next we tell our Executor to execute the sub-tasks of its configuration, if the configuration is an instance of IHasSubTasks. This is how the enhanced run-method looks like:<br />
<pre class="brush: java;">
public void run() {
	System.out.println(&quot;running &quot; + this + &quot; with a configuration of type &quot;
			+ conf.getClass().getCanonicalName());
	
	
	if (this.conf instanceof IHasSubTasks) {
		for (IUnitOfWork unit : ((IHasSubTasks) this.conf).getSubTasks()) {
			unit.run();
		}
	}
}
</pre><br />
And then we implement the interface in ComplexExecutorConfig:<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

...

public class ComplexExecutorConfig implements IHasSubTasks {

   ...

   	public List&lt;IUnitOfWork&gt; getSubTasks() {
		List&lt;IUnitOfWork&gt; sTasks = new ArrayList&lt;IUnitOfWork&gt;();
		for (String cn : this.tasks) {
			sTasks.add(Injector.setUp(cn));
		}
		return sTasks;
	}

}
</pre><br />
To get this to work we also add an <code>IUnitOfWork setUp(String)</code> method to the Injector to do the dynamic instancing. Neat&#8230;<br />
<pre class="brush: java;">
	public static IUnitOfWork setUp(final String cn) {
		try {
			return setUp((IUnitOfWork) Class.forName(cn).newInstance());
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
</pre></p>
<h3>Two units of work for demonstration purposes</h3>
<p>Finally, we create two additional IUnitOfWork implementations to make use of our new toys. Both implementations are simple and straight-forward.<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

public class HelloWorldUnit implements IUnitOfWork {

	@Override
	public void run() {
		System.out.println(&quot;Hello World!&quot;);
	}

}
</pre></p>
<p><pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

public class HelloConfigurationUnit implements IUnitOfWork {

	@Injected
	private SimpleExecutorConfig conf;
	
	@Override
	public void run() {
		System.out.println(this.conf.getMessage());
		
	}

}
</pre><br />
Now run IOCSampleApp again:</p>
<pre>
Injector: setting up dukeslittleb.tutorials.ioc.Executor
  Trying to inject into conf
running dukeslittleb.tutorials.ioc.Executor@1ad77a7 with a
configuration of type
dukeslittleb.tutorials.ioc.ComplexExecutorConfig
Injector: setting up dukeslittleb.tutorials.ioc.HelloWorldUnit
Injector: setting up dukeslittleb.tutorials.ioc.HelloConfigurationUnit
  Trying to inject into conf
Exception in thread "main" java.lang.RuntimeException:
java.lang.RuntimeException: javax.xml.bind.UnmarshalException
 - with linked exception:
[java.io.FileNotFoundException: ...
</pre>
<p>Boom - just as expected. As you can see the Injector is looking for the configuration file "dukeslittleb.tutorials.ioc.SimpleExecutorConfig.xml" to inject <code>conf</code> in dukeslittleb.tutorials.ioc.ComplexExecutorConfig, so let's add it:<br />
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
&lt;simple-executor-config&gt;
	&lt;message&gt;Hello from XML&lt;/message&gt;
&lt;/simple-executor-config&gt;
</pre></p>
<h3>Happy Ending</h3>
<p>Now let's do the final run of IOCSample App:</p>
<pre>
Injector: setting up dukeslittleb.tutorials.ioc.Executor
  Trying to inject into conf
running dukeslittleb.tutorials.ioc.Executor@b8f82d with a
configuration of type
dukeslittleb.tutorials.ioc.ComplexExecutorConfig
Injector: setting up dukeslittleb.tutorials.ioc.HelloWorldUnit
Injector: setting up dukeslittleb.tutorials.ioc.HelloConfigurationUnit
  Trying to inject into conf
Hello World!
Hello from XML
</pre>
<p>That's it! Now you know how to implement your own custom runtime annotations in Java, how to access fields reflectively (as a matter-of-fact methods work just the same) and how to use JAXB for your Java XML bindings.</p>
<br />Posted in java Tagged: dependency injection, diy, java, jaxb, tutorial <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dukeslittleb.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dukeslittleb.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dukeslittleb.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dukeslittleb.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dukeslittleb.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dukeslittleb.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dukeslittleb.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dukeslittleb.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dukeslittleb.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dukeslittleb.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dukeslittleb.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dukeslittleb.wordpress.com/134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dukeslittleb.wordpress.com/134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dukeslittleb.wordpress.com/134/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=134&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dukeslittleb.wordpress.com/2009/11/23/diy-java-dependency-injection-part-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>49.589727 10.964672</georss:point>
		<geo:lat>49.589727</geo:lat>
		<geo:long>10.964672</geo:long>
		<media:content url="http://1.gravatar.com/avatar/9481278ee655ffd79fa14455ce9989c9?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">dukeslittleb</media:title>
		</media:content>
	</item>
		<item>
		<title>DIY: Java Dependency Injection (Part 3)</title>
		<link>http://dukeslittleb.wordpress.com/2009/11/12/diy-java-dependency-injection-part-3/</link>
		<comments>http://dukeslittleb.wordpress.com/2009/11/12/diy-java-dependency-injection-part-3/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 20:24:49 +0000</pubDate>
		<dc:creator>dukeslittleb</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[dependency injection]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[jaxb]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://dukeslittleb.wordpress.com/?p=98</guid>
		<description><![CDATA[Creating a simple dependency injection framework with custom annotations, reflections and JAXB You can download the complete source as an Eclipse Java project. What has happened so far? In the first part we have created the @Injected annotation, an Interface for our units of work (IUnitOfWork) and skeletons for the Injector and the Executor. The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=98&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Creating a simple dependency injection framework with custom annotations, reflections and JAXB</strong><br />
You can <a href="http://www.mediafire.com/file/muwj2wqijzm/diy-dependency-injection-with-java.zip" rel="nofollow">download the complete source as an Eclipse Java project</a>.</p>
<h3>What has happened so far?</h3>
<p>In the <a href="/2009/11/03/diy-java-dependency-injection-part-1/">first part</a> we have created the @Injected annotation, an Interface for our units of work (IUnitOfWork) and skeletons for the Injector and the Executor. The <a href="/2009/11/04/diy-java-dependency-injection-part-2/">second part</a> was all about gathering the Java reflections basics to process the annotated classes.</p>
<h3>What&#8217;s in it for today?</h3>
<ul type="disc">
<li>A quick introduction to JAXB</li>
<li>Two simple configurations</li>
</ul>
<h3>JAXB quick start</h3>
<p>Okay, we will start with a very simple sample configuration as a POJO (plain old Java object) which we will JAXB-ify directly afterwards.<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

public class SimpleExecutorConfig {

	private String message;

	public final String getMessage() {
		return message;
	}

	public final void setMessage(final String m) {
		this.message = m;
	}
	
}
</pre><br />
The corresponding XML configuration for the bean above shall look like:<br />
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
&lt;simple-executor-config&gt;
	&lt;message&gt;Hello from XML&lt;/message&gt;
&lt;/simple-executor-config&gt;
</pre><br />
Now, let&#8217;s use JAXB for the binding. First, we will annotate the class to be an XML root element named <tt>simple-executor-config</tt> and tell JAXB to only consider explicitly annotated members. Then we will annotate the message field to become an XML element named <tt>message</tt> and make the internal schema require the element to be present.<br />
<pre class="brush: java;">
...
@XmlRootElement(name = &quot;simple-executor-config&quot;)
@XmlAccessorType(XmlAccessType.NONE)
public class SimpleExecutorConfig {

	@XmlElement(name = &quot;message&quot;, required = true)
	private String message;
...
</pre><br />
Let&#8217;s create a simple test for the configuration which will print the XML to standard out<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

import java.io.StringWriter;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;

public class PrintXMLs {

	public static void main(String[] args) throws JAXBException {
		SimpleExecutorConfig exConf = new SimpleExecutorConfig();
		exConf.setMessage(&quot;Hello World&quot;);
		print(exConf);
	}

	private static void print(Object obj) throws JAXBException {
		JAXBContext ctx = JAXBContext
			.newInstance(&quot;dukeslittleb.tutorials.ioc&quot;);
		StringWriter out = new StringWriter();
		ctx.createMarshaller().marshal(obj, out);
		System.out.println(obj.getClass().getCanonicalName());
		System.out.println();
		System.out.println(out.toString());
		System.out.println();
	}
	
}
</pre><br />
What does the test do? Within the main method we create an instance of <tt>SimpleExecutorConfiguration</tt> and pass it to <tt>print(Object)</tt> &#8211; which is a helper method creating the JAXB context for our tutorials package. The JAXB context is the key to get marshallers (Java to XML) and unmarshallers (XML to Java). The method marshals the given object and prints out the canonical name and the XML representation. Now, try to run the <tt>PrintXMLs</tt> an notice the exception:<br />
<tt>Exception in thread "main" javax.xml.bind.JAXBException: "dukeslittleb.tutorials.ioc" doesnt contain ObjectFactory.class or jaxb.index</tt><br />
Now, why that? JAXB is complaining, because it needs to know about the JAXB annotated classes of each package passed to the JAXB context. Packages cannot be introspected as conveniently as Classes via reflections, even though <a href="http://java.sun.com/javase/6/docs/api/java/lang/Package.html">packages expose some of their internals</a> via the API. The is due to the fact that different parts of a package may be loaded by separate class loaders which would make accessing this information very costly. But that&#8217;s a different story&#8230;<br />
We will stick to the <tt>jaxb.index</tt> method, which is very simple: Create a new text file named &#8220;jaxb.index&#8221; in the source folder of the package and enter the simple class name of each JAXB class, one per line.<br />
Now restart the test:<br />
<code>dukeslittleb.tutorials.ioc.SimpleExecutorConfig</code></p>
<p><code>&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;&lt;simple-executor-config&gt;&lt;message&gt;Hello World&lt;/message&gt;&lt;/simple-executor-config&gt;</code></p>
<h3>Two simple configurations</h3>
<p>We have already created the first JAXB-ified configuration which should now look like:<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = &quot;simple-executor-config&quot;)
@XmlAccessorType(XmlAccessType.NONE)
public class SimpleExecutorConfig implements IConfiguration {

	@XmlElement(name = &quot;message&quot;, required = true)
	private String message;

	public final String getMessage() {
		return message;
	}

	public final void setMessage(final String m) {
		this.message = m;
	}
	
}
</pre><br />
The second configuration is just slightly more complex. I want the XML to look like:<br />
<pre class="brush: xml;">
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;
&lt;complex-executor-config&gt;
	&lt;sub-tasks&gt;
&lt;class&gt;dukeslittleb.tutorials.ioc.HelloWorldUnit&lt;/class&gt;
&lt;class&gt;dukeslittleb.tutorials.ioc.Hello ConfigurationUnit&lt;/class&gt;
	&lt;/sub-tasks&gt;
&lt;/complex-executor-config&gt;
</pre><br />
I will give you the corresponding class. Take a look, you can figure this out yourself:<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name = &quot;complex-executor-config&quot;)
@XmlAccessorType(XmlAccessType.NONE)
public class ComplexExecutorConfig {

	@XmlElementWrapper(name = &quot;sub-tasks&quot;)
	@XmlElement(name = &quot;class&quot;)
	private List&lt;String&gt; tasks = new ArrayList&lt;String&gt;();
	
	public final void setTasks(List&lt;String&gt; subTasks) {
		this.tasks = subTasks;
	}
	
	public final List&lt;String&gt; getTasks() {
		return this.tasks;
	}

}
</pre><br />
For in-depth information on JAXB, you should take a look at <a href="https://jaxb.dev.java.net/tutorial/">the JAXB tutorial by Glassfish&#8217;s Metro team</a>.<br />
We have finished our JAXB excursus and will turn our complete focus on the dependency injection project again in the <a href="/2009/11/23/diy-java-dependency-injection-part-4/">next part</a> by tying it all together.</p>
<br />Posted in java Tagged: dependency injection, diy, java, jaxb, tutorial <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dukeslittleb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dukeslittleb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dukeslittleb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dukeslittleb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dukeslittleb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dukeslittleb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dukeslittleb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dukeslittleb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dukeslittleb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dukeslittleb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dukeslittleb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dukeslittleb.wordpress.com/98/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dukeslittleb.wordpress.com/98/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dukeslittleb.wordpress.com/98/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=98&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dukeslittleb.wordpress.com/2009/11/12/diy-java-dependency-injection-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<georss:point>49.589727 10.964672</georss:point>
		<geo:lat>49.589727</geo:lat>
		<geo:long>10.964672</geo:long>
		<media:content url="http://1.gravatar.com/avatar/9481278ee655ffd79fa14455ce9989c9?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">dukeslittleb</media:title>
		</media:content>
	</item>
		<item>
		<title>&#8220;three strikes and you&#8217;re out&#8221;</title>
		<link>http://dukeslittleb.wordpress.com/2009/11/06/three-strikes-and-youre-out/</link>
		<comments>http://dukeslittleb.wordpress.com/2009/11/06/three-strikes-and-youre-out/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 23:51:27 +0000</pubDate>
		<dc:creator>dukeslittleb</dc:creator>
				<category><![CDATA[Intellectual property]]></category>
		<category><![CDATA[commons]]></category>
		<category><![CDATA[freedom]]></category>
		<category><![CDATA[industry]]></category>
		<category><![CDATA[patents]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://dukeslittleb.wordpress.com/?p=83</guid>
		<description><![CDATA[Recently, different European governments have been discussing to introduce three-stikes rules to punish notorious internet pirates by cutting of their connection. This is another example of politicians being too open minded when it comes to the industry&#8217;s concerns when it comes to intellectual property. It also shows that the industry has not yet accepted the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=83&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently, different European governments have been discussing to introduce three-stikes rules to punish notorious internet pirates by cutting of their connection.<br />
This is another example of politicians being too open minded when it comes to the industry&#8217;s concerns when it comes to intellectual property. It also shows that the industry has not yet accepted the change of paradigms the internet has caused.</p>
<p>On Sunday, the UK newspaper <a href="http://www.independent.co.uk/news/uk/crime/illegal-downloaders-spend-the-most-on-music-says-poll-1812776.html">The Independent</a> reported that people who illegally download music from the internet also spend more money on music than anyone else, according to a new study. The survey states that the so-called pirates spent an average of £77 a year on music – £33 more than those who claim that they never download music dishonestly. Disturbing, isn&#8217;t it.</p>
<p>Just six days earlier, the <a href="http://www.nytimes.com/2009/10/29/business/global/29copy.html">New York Times</a> mused about the German government being open for wishes of publishing industry to introduce royalty collection societies to gather and distribute fees for relating to and citing from published articles. Something that would probably make posts like this impossible as well. Great!</p>
<p>The first strike has been traditional publishing industries (music labels and movie houses) to miss the file-sharing trend.</p>
<p>The second strike will probably be software publishers being late on the concept of open source while thumping on software patents.</p>
<p>The third strike &#8211; we&#8217;ll see, but remember: &#8220;three strikes and you&#8217;re out&#8221;, dear publishing industry&#8230;</p>
<br />Posted in Intellectual property Tagged: commons, freedom, industry, patents, politics <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dukeslittleb.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dukeslittleb.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dukeslittleb.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dukeslittleb.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dukeslittleb.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dukeslittleb.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dukeslittleb.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dukeslittleb.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dukeslittleb.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dukeslittleb.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dukeslittleb.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dukeslittleb.wordpress.com/83/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dukeslittleb.wordpress.com/83/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dukeslittleb.wordpress.com/83/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=83&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dukeslittleb.wordpress.com/2009/11/06/three-strikes-and-youre-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9481278ee655ffd79fa14455ce9989c9?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">dukeslittleb</media:title>
		</media:content>
	</item>
		<item>
		<title>DIY: Java Dependency Injection (Part 2)</title>
		<link>http://dukeslittleb.wordpress.com/2009/11/04/diy-java-dependency-injection-part-2/</link>
		<comments>http://dukeslittleb.wordpress.com/2009/11/04/diy-java-dependency-injection-part-2/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 00:03:30 +0000</pubDate>
		<dc:creator>dukeslittleb</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[dependency injection]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://dukeslittleb.wordpress.com/?p=55</guid>
		<description><![CDATA[Creating a simple dependency injection framework with custom annotations, reflections and JAXB What has happened so far? In the first part we have created the @Injected annotation, an Interface for our units of work (IUnitOfWork) and skeletons for the Injector and the Executor. You can download the complete source as an Eclipse Java project. What&#8217;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=55&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Creating a simple dependency injection framework with custom annotations, reflections and JAXB</strong></p>
<h3>What has happened so far?</h3>
<p>In the <a href="/2009/11/03/diy-java-dependency-injection-part-1/">first part</a> we have created the @Injected annotation, an Interface for our units of work (IUnitOfWork) and skeletons for the Injector and the Executor.<br />
You can <a href="http://www.mediafire.com/file/muwj2wqijzm/diy-dependency-injection-with-java.zip" rel="nofollow">download the complete source as an Eclipse Java project</a>.</p>
<h3>What&#8217;s next? Using some reflection&#8230;</h3>
<p>Next we will add a private field to out Executor and introspect it with the Injector&#8217;s setUp(IUnitOfWork) method. So let&#8217;s add an arbitrary instance variable to the Executor to get a grip on the work done with reflections.<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

public class Executor implements IUnitOfWork {

	private Object example;

	public void run() {
		System.out.println(&quot;running &quot; + this);
	}
}

</pre><br />
Next, we will extend the Injector&#8217;s run method to do some introspection on the fields of the IUnitOfWork it gets passed.<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

public class Injector {

	public static final IUnitOfWork setUp(final IUnitOfWork unit) {
		System.out.println(&quot;Injector: setting up &quot;
				+ unit.getClass().getCanonicalName());
		for (Field field : unit.getClass().getDeclaredFields()) {
			System.out.println(&quot;  Field: &quot; + field.getName());
		}
		return unit;
	}
}
</pre><br />
Now run the IOCLauncherApp and take a look at its output:</p>
<pre>
Injector: setting up dukeslittleb.tutorials.ioc.Executor
running dukeslittleb.tutorials.ioc.Executor@1d04653
  Field: example
</pre>
<p>As you can see, retrieving the private fields of a Java class is a piece of cake with reflections using <a href="http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getDeclaredFields%28%29" rel="nofollow">Class.getDeclaredFields()</a>. Also look at <a href="http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getFields%28%29" rel="nofollow">Class.getFields()</a> and notice the differences. While the first returns all fields which are declared in the current class regardless of their visibility, the latter returns all public fields of the class&#8217; hierarchy, i.e. of the class, all its superclasses and interfaces.</p>
<h3>First fun with our custom annotation</h3>
<p>Now let&#8217;s add the @Injected annotation to our example field in Executor:<br />
<pre class="brush: java;">
@Injected
private Object example;
</pre><br />
And now we extend the field iteration of the Injector to consider only fields with the annotation. The Injector shall now output annotated fields and their type.<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

public class Injector {

	public static final IUnitOfWork setUp(final IUnitOfWork unit) {
		System.out.println(&quot;Injector: setting up &quot;
				+ unit.getClass().getCanonicalName());
		for (Field field : unit.getClass().getDeclaredFields()) {
			if (field.isAnnotationPresent(Injected.class)) {
				System.out.println(&quot;  Field: &quot; + field.getName() + &quot; is of type&quot; + field.getType().getCanonicalName());
			}
		}
		return unit;
	}
}
</pre><br />
Now re-run the launcher app:</p>
<pre>
Injector: setting up dukeslittleb.tutorials.ioc.Executor
running dukeslittleb.tutorials.ioc.Executor@1d04653
  Field: example is of type java.lang.Object
</pre>
<p>In this tutorial we will be using the canonical name to identify the configuration files required to build injected objects with JAXB. In the <a href="/2009/11/12/diy-java-dependency-injection-part-3/">next part</a> we will do a little excursus on JAXB and inject our first custom configurations with an extended version of the Injector.</p>
<br />Posted in java Tagged: dependency injection, diy, java, tutorial <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dukeslittleb.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dukeslittleb.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dukeslittleb.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dukeslittleb.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dukeslittleb.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dukeslittleb.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dukeslittleb.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dukeslittleb.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dukeslittleb.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dukeslittleb.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dukeslittleb.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dukeslittleb.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dukeslittleb.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dukeslittleb.wordpress.com/55/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=55&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dukeslittleb.wordpress.com/2009/11/04/diy-java-dependency-injection-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9481278ee655ffd79fa14455ce9989c9?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">dukeslittleb</media:title>
		</media:content>
	</item>
		<item>
		<title>DIY: Java Dependency Injection (Part 1)</title>
		<link>http://dukeslittleb.wordpress.com/2009/11/03/diy-java-dependency-injection-part-1/</link>
		<comments>http://dukeslittleb.wordpress.com/2009/11/03/diy-java-dependency-injection-part-1/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 00:19:43 +0000</pubDate>
		<dc:creator>dukeslittleb</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[dependency injection]]></category>
		<category><![CDATA[diy]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://dukeslittleb.wordpress.com/?p=28</guid>
		<description><![CDATA[Creating a simple dependency injection framework with custom annotations, reflections and JAXB Preface In this tutorial I will show you how to create a very, very basic dependency injection framework with your own custom annotation. You will need Java 6TM to do all the examples (you can also use Java 5TM, but then you will have to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=28&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><strong>Creating a simple dependency injection framework with custom annotations, reflections and JAXB</strong></p>
<h3>Preface</h3>
<p>In this tutorial I will show you how to create a very, very basic dependency injection framework with your own custom annotation. You will need <a rel="nofollow" href="http://java.sun.com/javase/downloads/index.jsp">Java 6<sup>TM</sup></a> to do all the examples (you can also use Java 5<sup>TM</sup>, but then you will have to download and set up JAXB separately).</p>
<p>Together, we will create a custom annotation to inject our dependency configurations, discover and process the annotation via reflections and add an XML binding for the configurations with JAXB.<br />
I recommend you use an IDE like <a href="http://eclipse.org" rel="nofollow">Eclipse</a> to follow the examples. If you do so, a simple Java project will do the trick.</p>
<p>You can <a href="http://www.mediafire.com/file/muwj2wqijzm/diy-dependency-injection-with-java.zip" rel="nofollow">download the complete source as an Eclipse Java project</a>.</p>
<h3>Let&#8217;s get started &#8211; creating the annotation</h3>
<p>Since the use of the default package is not a good idea, we will start in a new one for this project, e.g. &#8216;dukeslittleb.tutorials.ioc&#8217;.  Now creating an annotation for run-time evaluation (this is what we need) is very easy:</p>
<p><pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME)
@Target(value = { ElementType.FIELD })
public @interface Injected {

}
</pre><br />
The above creates an annotation @Injected which will be available for run-time evaluation via reflections (see <a href="http://java.sun.com/javase/6/docs/api/java/lang/annotation/RetentionPolicy.html#RUNTIME" rel="nofollow">RetentionPolicy.RUNTIME</a>). In this tutorial we will only annotate fields, hence the <a href="http://java.sun.com/javase/6/docs/api/java/lang/annotation/Target.html" rel="nofollow">@Target</a>.</p>
<h3>Preparing the units of work for the injection</h3>
<p>Next we will create a very simple interface for the units of work want to tie together with dependency injection.</p>
<p><pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

public interface IUnitOfWork {

	void run();
	
}
</pre></p>
<p>And a simple implementation:<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

public class Executor implements IUnitOfWork {

	public void run() {
		System.out.println(&quot;running &quot; + this);
	}
}
</pre><br />
We are almost there for today: we just need two things. First the injector which will later do all the magic and a simple app to launch.</p>
<p>Okay, let&#8217;s start with the injector, which will for now do nothing but print the instances which it gets passed.<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

public class Injector {

	public static final IUnitOfWork setUp(final IUnitOfWork unit) {
		System.out.println(&quot;Injector: setting up &quot;
				+ unit.getClass().getCanonicalName());	
		return unit;
	}
}
</pre><br />
And the launcher app for testing:<br />
<pre class="brush: java;">
package dukeslittleb.tutorials.ioc;

public class IOCSampleApp {

	public static void main(String[] args) {		
		Injector.setUp(new Executor()).run();
	}

}
</pre><br />
If you launch the app you should see something like:</p>
<pre>
Injector: setting up dukeslittleb.tutorials.ioc.Executor
running dukeslittleb.tutorials.ioc.Executor@1d04653
</pre>
<p>In the <a href="/2009/11/04/diy-java-dependency-injection-part-2/">next part</a>, we will make a first use of the @Injected annotation and add some life to the injector.</p>
<br />Posted in java Tagged: dependency injection, diy, java, tutorial <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dukeslittleb.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dukeslittleb.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dukeslittleb.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dukeslittleb.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dukeslittleb.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dukeslittleb.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dukeslittleb.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dukeslittleb.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dukeslittleb.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dukeslittleb.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dukeslittleb.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dukeslittleb.wordpress.com/28/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dukeslittleb.wordpress.com/28/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dukeslittleb.wordpress.com/28/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=28&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dukeslittleb.wordpress.com/2009/11/03/diy-java-dependency-injection-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9481278ee655ffd79fa14455ce9989c9?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">dukeslittleb</media:title>
		</media:content>
	</item>
		<item>
		<title>pulse 0.7 preview 1 released</title>
		<link>http://dukeslittleb.wordpress.com/2009/10/27/pulse-0-7-preview-1-released/</link>
		<comments>http://dukeslittleb.wordpress.com/2009/10/27/pulse-0-7-preview-1-released/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 21:53:23 +0000</pubDate>
		<dc:creator>dukeslittleb</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[pulse]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[webapplication]]></category>
		<category><![CDATA[webdevelopment]]></category>

		<guid isPermaLink="false">http://dukeslittleb.wordpress.com/?p=20</guid>
		<description><![CDATA[Today the first preview release of the upcoming 0.7 series of pulse &#8211; the web application framework has been released. This preview release includes all enhancements of the previous maintenance releases of the 0.6 beta series. The major change is the restructuring of the authentication process into a separate part of the execution chain. The [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=20&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Today the first preview release of the upcoming 0.7 series of <a href="http://pulse.torweg.org">pulse &#8211; the web application framework</a> has been released.<br />
This preview release includes all enhancements of the previous maintenance releases of the 0.6 beta series. The major change is the restructuring of the authentication process into a separate part of the execution chain.<br />
The 0.7 series will be the first public production grade release of pulse adding many new features to the framework.</p>
<br />Posted in Open Source, pulse Tagged: java, opensource, release, webapplication, webdevelopment <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/dukeslittleb.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/dukeslittleb.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/dukeslittleb.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/dukeslittleb.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/dukeslittleb.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/dukeslittleb.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/dukeslittleb.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/dukeslittleb.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/dukeslittleb.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/dukeslittleb.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/dukeslittleb.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/dukeslittleb.wordpress.com/20/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/dukeslittleb.wordpress.com/20/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/dukeslittleb.wordpress.com/20/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=dukeslittleb.wordpress.com&amp;blog=10108325&amp;post=20&amp;subd=dukeslittleb&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://dukeslittleb.wordpress.com/2009/10/27/pulse-0-7-preview-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9481278ee655ffd79fa14455ce9989c9?s=96&#38;d=&#38;r=PG" medium="image">
			<media:title type="html">dukeslittleb</media:title>
		</media:content>
	</item>
	</channel>
</rss>
