<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Ben Poole</title>
<link>http://benpoole.com</link>
<language>en-gb</language>
<description>Ben Poole: last 10 &#8217;blog entries filed under &#8220;Java&#8221;</description>
<copyright>Copyright 1997 - 2013, Benedict Poole</copyright>
<generator>Domino SimpleFeed from http://foo-soft.com</generator>
<webMaster>site@benpoole.com (Ben Poole)</webMaster>
<atom:link href="http://benpoole.com/bp.nsf/blogs-cat.rss" rel="self" type="application/rss+xml" />
<item><title>Random code snippet: getting user’s documents / home directory</title><pubDate>Wed, 1 Aug 2012 22:33 +0100</pubDate><description><![CDATA<p>Occasionally I like to throw out random tips without any context or, indeed, much point beyond their inherent usefulness for anyone Googling or Binging. So, whatever, here is the latest:</p>

<p>It is commonly-believed that grabbing the <code>user.dir</code> or <code>user.home</code> system properties in Java is good enough, when it comes to making use of a user’s documents folder. Well, they get you part of the way there (<a href="http://www.java.net/node/654577" title="java.net discussions: current user directory question">although they don’t necessarily mean what you think they mean</a>), but if you want a more resilient bit o’code, this may float your boat (note that this makes use of the <a href="http://en.wikipedia.org/wiki/Swing_(Java)" title="Link to Swing API page on Wikipedia">Swing <abbr title="Application Programming Interface">API</abbr></a>):</p>

<pre class="prettyprint">return javax.swing.filechooser.FileSystemView
  .getFileSystemView().getDefaultDirectory().getAbsolutePath();</code></pre>
  
<p>Less useful on OS X (just returns a reference to the user&#8217;s home directory so you may as well just carry on with <code>user.home</code>) but  good for Windows, where it returns a reference to the user&#8217;s &#8220;My Documents&#8221; folder&#8212;I think it&#8217;s internationalisation-friendly to boot.</p>]></description><link>http://benpoole.com/weblog/201208012224</link><dc:subject>programming, snippets, java, code</dc:subject><dc:creator>Ben Poole</dc:creator><guid isPermaLink="true">http://benpoole.com/weblog/201208012224</guid><comments>http://benpoole.com/weblog/201208012224#comments</comments></item><item><title>Significant releases</title><pubDate>Mon, 30 Apr 2012 20:42 +0100</pubDate><description><![CDATA<p>Two important releases today. First up, we have the latest instalment of the <a href="http://wormworldsaga.com/">Wormworld saga</a> from <a href="http://daniellieske.blogspot.co.uk/">Daniel Lieske</a>, hooray!</p>

<p><a href="http://daniellieske.blogspot.co.uk/2012/04/chapter-3-monstrous-forest.html">Chapter 3 - A Monstrous Forest</a>.</p>

<blockquote cite="http://daniellieske.blogspot.co.uk/2012/04/chapter-3-monstrous-forest.html">Chapter 3 was a huge challenge for me as I wanted the first impression of the Wormworld to be a lasting one. This chapter is the longest chapter so far and it is full of elaborate full scale backgrounds. Including prelim, concept art and layout, I worked over 400 hours on Chapter 3. I think that it shows and I hope that everyone will enjoy the ride.</blockquote>


<p>And then we have something else, which I must confess I hadn’t seen coming (I’ve just been too “heads-down” lately to know what’s going on in the Java world):</p>

<blockquote cite="http://www.oracle.com/us/corporate/press/1603497"><p>Oracle Releases Java SE 7 Update 4 and JavaFX 2.1</p>
<p>First Java Development Kit and JavaFX Software Development Kit <strong>for Mac OS X Available From Oracle</strong></p></blockquote>

<p>(My emphasis). Crikey! <a href="http://www.oracle.com/us/corporate/press/1603497">Read more (and get the <abbr title="Java Deveopment Kit">JDK</abbr>) from Oracle</a>.</p>]></description><link>http://benpoole.com/weblog/201204302042</link><dc:subject>java, oracle, apple, os x, wormworld, daniel lieske</dc:subject><dc:creator>Ben Poole</dc:creator><guid isPermaLink="true">http://benpoole.com/weblog/201204302042</guid><comments>http://benpoole.com/weblog/201204302042#comments</comments></item><item><title>Java dates ’n’ Strings: oh noes</title><pubDate>Tue, 7 Sep 2010 15:43 +0100</pubDate><description><![CDATA<p>Today’s Java <abbr title="What The Fuck">WTF</abbr>: parsing a two-digit year value from a time-date value expressed as a <code>String</code>. Meh, that’s not brittle or anything&hellip;</p>

<pre class="prettyprint">String tmp = someDoc.getItemValueString("someDateField");
String arrTmp[] = tmp.split("/");
int year = Integer.parseInt(arrTmp[2]);</pre>

<p>That which is seen in one’s <abbr title="Integrated Development Environment">IDE</abbr> cannot be unseen. Don’t do this at home kids.</p>]></description><link>http://benpoole.com/weblog/201009070743</link><dc:subject>java</dc:subject><dc:creator>Ben Poole</dc:creator><guid isPermaLink="true">http://benpoole.com/weblog/201009070743</guid><comments>http://benpoole.com/weblog/201009070743#comments</comments></item><item><title>A little Ant tiplet</title><pubDate>Wed, 12 May 2010 15:52 +0100</pubDate><description><![CDATA<p>When putting together an Ant script, it’s common to maintain some sort of hierarchy of “targets” which get invoked in a certain order (by setting dependencies for each). A typical script goes something like this (pseudo-ant!):</p>

<pre class="prettyprint">target name = "clean"
target name = "build"
target name = "test"
target name = "deploy"</pre>

<p>Now, for a <samp>clean</samp> target, I <em>used</em> to do something like this:</p>

<pre class="prettyprint">&lt;target name="clean"&gt;
  &lt;delete dir="src" /&gt;
&lt;/target&gt;</pre>

<p>Simple and to the point eh: get Ant to delete your source directory, ready for the “build” target to, well, re-build it. Super, smashing, great. But if you use source control (and of course, you do) you may run into a whole world of trouble with this approach. For example, one of my clients uses Subversion, and I started to see these sorts of errors when attempting to commit the changes resulting from the build:</p>

<pre class="prettyprint">Working copy not locked; this is probably a bug, please report
svn: Directory '/Users/SeymourButtz/Workspaces/Eclipse/Naffproject/src/.svn'
containing working copy admin area is missing</pre>

<p>Lawks! “Fear not” I said to myself, and popped off to the <a href="http://ant.apache.org/manual/CoreTasks/delete.html">Ant manual “Delete” page</a>. Once there, I discovered that I simply needed to get down with the kids, and update my Ant skillz. Don’t use the square old <samp>delete dir=&hellip;</samp> directive! Use this badger instead:</p>

<pre class="prettyprint">&lt;target name="clean"&gt;
  &lt;delete includeemptydirs="true"&gt;
    &lt;fileset dir="src" defaultexcludes="true" /&gt;
  &lt;/delete&gt;
&lt;/target&gt;</pre>

<p>Slightly more verbose, but also a lot cleaner (pardon the pun): it wipes out your <samp>src</samp> directory as before, but having that <samp>defaultexcludes</samp> flag means the operation preserves any “required” sub-folders, which typically comprise such hidden gems as <samp>.svn</samp> and <samp>.cvs</samp></p> <p>Hip hip hooray!</p> <p>(By the way, more on the Subversion error <a href="http://subclipse.tigris.org/wiki/PluginFAQ#head-73584410a8d4fbad6781c7b16be39f6518410a61" title="Link to Subclipse FAQ, “I keep getting an error message about my 'Working Copy not locked'. Is this a bug? What should I do?”">can be found in the FAQ</a>).</p>]></description><link>http://benpoole.com/weblog/201005120752</link><dc:subject>ant, tips</dc:subject><dc:creator>Ben Poole</dc:creator><guid isPermaLink="true">http://benpoole.com/weblog/201005120752</guid><comments>http://benpoole.com/weblog/201005120752#comments</comments></item><item><title>Easy change logs</title><pubDate>Thu, 7 Jan 2010 22:27 +0100</pubDate><description><![CDATA<p>Developers! Tired of status meetings? Fed up with regular requests for progress reports, change logs, version notes? What you need is an Automated Solution&reg;!</p>

<p>The hard reality of the corporate coding way of life is that various people always want to know what you&#8217;re doing, what you&#8217;ve fixed, what changes are in what release, and so on and so forth. When it comes to Domino development, this is where a tool like <a href="http://teamstudio.com/new/products/ciao.html">Teamstudio&#8217;s CIAO!</a> comes in to play. If you&#8217;re diligent about providing check-out comments, and you tag up a version within CIAO! every time you do a build for your deployment / admin. team, you already have the wherewithal to produce complete change logs, with next to no effort. How? Simply make use of this menu option:</p>

<p><img src="http://benpoole.com/bp.nsf/files/ciao/$FILE/ciao.png" height="234" width="433" style="border: 0;" alt="Screenshot: CIAO! change report in action" title="Screenshot: CIAO! change report in action"></p>

<p>Smashing stuff; can&#8217;t recommend CIAO! highly enough, even just for this sort of thing, never mind all the versioning / team development splendour.</p>

<p>But what about non-NSF code? What about all the stuff that you may ram into different version control systems? Well, I&#8217;m living in Eclipse at the moment, and as the project utilises the skills of a whole panoply of developers, <abbr title="Concurrent Versions System">CVS</abbr> is a must for us. Every time we do a significant release of a component (our project encompasses two different&#8212;but related&#8212;modules in CVS), we have to provide some form of change log. And casting your mind back to the exact change you made to fix some bug, three weeks previous is tricky to say the least. What you need is some kind of tool for producing your change logs.</p>

<p>I have found such a thing. Moreover, it is <em>really</em> simple to use, is open-source, and it&#8217;s free. Allow me to introduce you to <a href="http://cvschangelogb.sourceforge.net">CVS Log Change Builder</a>. CVS Log Change Builder is a simple soul in that it just comprises a single Perl script.</p>
<p>That&#8217;s it, no executables or other bits of nonsense, just a beautifully simple tool (assuming you have a CVS client on your path).</p>

<p>OK, how do you use it? Well, first up you need to edit it to point at your CVS server like so:</p>

<pre>my $CvsRoot=':pserver:USERNAME@CVS_SERVER_NAME:/CVS';</pre>

<p>Once that&#8217;s done, copy the Perl script to the check-out root of the module you wish to report upon, and run the script. Here&#8217;s one typical use for it:</p>

<pre>perl cvschangelogbuilder.pl -output=buildhtmlreport</pre>

<p>&hellip; note that the script can take a wee while to run (and may prompt to save your CVS password in a .cvspass file the first time round also), but once it&#8217;s finished, you should have a lovely shiny report. In the example command above, we&#8217;re electing to output as a manager-friendly <abbr title="HyperText Markup Language">HTML</abbr> file. Everything&#8217;s there: who checked in what and when, how many lines of code you got (always an <a href="http://nedbatchelder.com/blog/200309/lines_of_code_per_month.html" title="Link to &#8220;Ned Batchelder: Lines of code per month&#8221;">important metric</a>, right?), pretty colours, the lot.</p>

<p>Job&#8217;s a good &#8217;un!</p>]></description><link>http://benpoole.com/weblog/201001072227</link><dc:subject>cvschangelogbuilder, ciao, version control</dc:subject><dc:creator>Ben Poole</dc:creator><guid isPermaLink="true">http://benpoole.com/weblog/201001072227</guid><comments>http://benpoole.com/weblog/201001072227#comments</comments></item><item><title>Why Stack Overflow rocks</title><pubDate>Tue, 10 Nov 2009 22:32 +0100</pubDate><description><![CDATA<p><a href="http://stackoverflow.com">Stack Overflow</a> is rapidly becoming my #1 code snippet resource. It is superb, and if you’ve not had reason to go there yet, do so! The whole system of voting up / down questions and answers is like a lovely <a href="http://www.google.com/technology/pigeonrank.html">non-pigeon PageRank&trade;</a> for code.</p> <p>For example, after a long day at my current contract, I needed a wee bit o’Java that would pad out an integer to a three-digit string value. Now, there are ways to do this with simple padding, length testing and sub-stringing, but this, I think you will agree, is <em>much</em> better:</p> <p><code>String.format("%03d", someIntOrOther); <span class="comments">// pads with length of 3</span></code></p> <p>Eh? Eh? Great isn’t it! And the thing is, I just <em>knew</em> there was something like this out there, so rather than flail around in Google, I opted for a simple search (for “java padding”) at Stack Overflow, and collared this code in no time.</p> <p>I &hearts; the Stack Overflow.</p> <p>(<abbr title="By The Way">BTW</abbr>, if you fancy this padding code, <a href="http://stackoverflow.com/questions/473282/left-padding-integers-with-zeros-in-java" title="Stack Overflow: “Left padding integers with zeros in Java”">you can vote it up and find the whole question / discussion / bonkers rubbish answers here)</a>.</p>]></description><link>http://benpoole.com/weblog/200911101432</link><dc:subject>stackoverflow, tips, java</dc:subject><dc:creator>Ben Poole</dc:creator><guid isPermaLink="true">http://benpoole.com/weblog/200911101432</guid><comments>http://benpoole.com/weblog/200911101432#comments</comments></item><item><title>Noddy tip: use Spotlight with Eclipse!</title><pubDate>Mon, 27 Jul 2009 21:06 +0100</pubDate><description><![CDATA<p>File this under “really obvious but nifty anyway”&hellip;</p> <p>One of the common whinges about <a href="http://eclipse.org">Eclipse</a> as a development environment is that there is no decent cross-project / cross-workspace search. I know we Mac users can be insufferably smug, but I’m sorry, <a href="http://www.apple.com/macosx/what-is-macosx/spotlight.html">Spotlight</a> really does the do here. I was searching for a constant—let us call it WINKLE—and out of the 200-odd classes in a particular project, I could not remember where it was. Go to the Spotlight bar in OS X, type in <samp>WINKLE</samp>. Narrow your search to your Eclipse Workspace folder if you like, and in a gnat’s fart, you are there:</p> <p><a href="http://www.flickr.com/photos/benpoole/3762530409/" title="Spotlight &amp; Eclipse by Ben Poole, on Flickr"><img src="http://farm4.static.flickr.com/3471/3762530409_12e5e662c1.jpg" width="500" height="230" alt="Spotlight &amp; Eclipse" /></a></p> <p>Now I know you can trace call hierarchies in Eclipse, and that’s a really handy feature. But Spotlight rocks, and this is just one of the ways.</p>]></description><link>http://benpoole.com/weblog/200907271306</link><dc:subject>os x, spotlight, eclipse, tips, pictures</dc:subject><dc:creator>Ben Poole</dc:creator><guid isPermaLink="true">http://benpoole.com/weblog/200907271306</guid><comments>http://benpoole.com/weblog/200907271306#comments</comments></item><item><title>Logging in Java, when you’re not on Domino</title><pubDate>Tue, 14 Jul 2009 21:06 +0100</pubDate><description><![CDATA<p>In addition to his Adobe Flex stuff, m’fellow London Developer Co-op bod Mark has been doing some posts on Java-based alternatives to familiar Domino concepts: <a href="http://www.anewchance.co.uk/d6plinks/ADMR-7TVT4Y" title="Oi, where's me config docs? Oh bugger I don't have a nsf">configuration documents</a> and <a href="http://www.anewchance.co.uk/d6plinks/ADMR-7TLV4D" title="Doing scheduled agents when not on a Domino server">scheduled agents</a> so far. The lovely chap then forced me in on the act, and in fairness it has been rather a while since I posted anything remotely useful or technical.</p> <p>So here goes, a lightweight guide to logging in Java, seeing how logs are close to my heart. Of course, as with <em>anything</em> in Java, there is no One True Way, but this is as good as any (feel free to shoot me down in flames).</p> <p>If you’re well-behaved when it comes to your Notes / Domino development, you use some kind of logging, even if it’s only during the debug phase of your development project. Domino provides a capable framework for this—<code>NotesLog</code>—and <a href="http://www.nsftools.com">Julian Robichaux</a> has gone one (thousand) better with his excellent <a href="http://openntf.org/projects/pmt.nsf/projectlookup/openlog">OpenLog</a> project.</p> <p>Your Java code should be no different. OpenLog works for Java as well as Lotusscript, so you’d do well to use it in your Domino Java agents. If you’re coding non-Domino stuff though, you might want to consider one of the Java logging frameworks. There are a fair few, and it gets confusing when you see mention of <a href="http://logging.apache.org/log4j/">log4j</a> piled on top of talk about <code>org.apache.commons.logging</code> and the like.</p> <h4>In Java you have to justify <em>everything</em></h4> <p>Being a lazy sod, I can’t be doing with all the advanced guff about appenders, custom configurations, different libraries, ya-da ya-da. I just want to be able to log some stuff somewhere consistently, and move on to the next problem. I tend to choose something that looks OK, and run with it. My current project has a fair few developers dipping in and out of it, with a number of possible forks possible downstream. To this end, I opted for the <a href="http://commons.apache.org/logging/">Apache commons-logging</a> project as tiny layer above the venerable <a href="http://logging.apache.org/log4j">log4j</a> framework. Here’s what the commons-logging wiki <a href="http://wiki.apache.org/commons/Commons_Logging_FUD" title="Commons Logging FUD">has to say</a> on the matter:</p> <blockquote cite="http://wiki.apache.org/commons/Commons_Logging_FUD">If however, like the Jakarta Commons project, you’re building a tiny little component that you intend for other developers to embed in their applications and frameworks, and you believe that logging information might be useful to those clients, and you can’t be sure what logging framework they’re going to want to use, then commons-logging might be useful to you.</blockquote>

<h4>Fair enough. Let’s go!</h4>

<ol>
<li>Add the <a href="http://commons.apache.org/logging/">commons-logging</a> <abbr title="Java ARchive">JAR</abbr> to your project dependencies</li>
<li>Ensure relevant classes import the relevant packages (<code>org.apache.commons.logging.Log</code> and <code> org.apache.commons.logging.LogFactory</code>)</li>
<li>Initialise your log<sup>*</sup>: <pre class="prettyprint">private static Log log = LogFactory.getLog(YOURCLASSNAME.class);</pre</li>
<li>Use the shiny new log in your code: <pre class="prettyprint">log.debug("WidgetOne fully instantiated; now populating WidgeTwo");</pre></li>
</ol>

<p>Simple! We’re using log4j as our implementation, which is arguably the most common logging package. If you want to pick up an example <samp>log4j.xml</samp> configuration, then <a href="http://benpoole.com/bp.nsf/files/log4j/$FILE/log4j.xml" title="Click to view / download a simple log4 xml configuration">this should do the trick</a> (link to an annotated, teeny tiny XML file).</p>

<h4>Silly footnotes</h4>
<p class="foot-note"><sup>*</sup> - You can be a little fancier here if you must, using reflection to grab the name of the current class, thus rendering your single line of code truly portable <sup>**</sup>.</p>

<p><sup>**</sup> - Oh all right:<br /> <del><pre class="prettyprint">String cn = this.getClass().getName();<br/>System.out.println(cn.substring(cn.lastIndexOf(".") + 1));</pre></del><br /><pre class="prettyprint">getClass().getSimpleName();</pre></p>

<h4>Filtering</h4>
<p>Logging is so prevalent in the Java world, that you may find that your appender of choice gets rather cluttered (tsk). If you wish for more purity in your console / log file / mail / whatever, then you can add <code>&lt;logger&gt;</code> entries in your log4j configuration to filter out the guff. For example, in our project we don’t care about messages from the Hibernate package, so this is what we do in our <samp>log4j.xml</samp> file:</p>

<pre class="prettyprint">&lt;logger name="org.hibernate" additivity="false"&gt;
  &lt;!-- ignore all but most serious messages from Hibernate --&gt;
  &lt;level value="error" /&gt;
  &lt;appender-ref ref="stdout" /&gt;
&lt;/logger&gt;</pre>

<p>&hellip; This way Hibernate quietly sits in the corner unless it hits a major error. You can add more logger nodes for various packages, even down to the full class level. Alternatively, you can ignore excluding stuff, and simply do a filter which includes <em>just</em> your package (in this example, <code>com.benpoole.winkle</code>):</p>

<pre class="prettyprint">&lt;logger name="com.benpoole.winkle"&gt;
  &lt;!-- Print only messages of level DEBUG (or higher) for winkle --&gt;
  &lt;level value="warn"/&gt; &lt;/logger&gt;
</pre>

<h4>Further reading</h4>
<p>There’s a reasonable wiki page out there, all about setting up your log4j file. It also provides guidance as to how to convert an older-style <samp>log4j.properties</samp> file into its XML equivalent: <a href="http://wiki.apache.org/logging-log4j/Log4jXmlFormat">Log4j XML Configuration Primer</a>. The wiki goes on to detail the various Appenders you can use (e.g. file, console, SMTP&hellip;) and even sort of tells you about “additivity”.</p> <p>In short, it tells you more than I. Enjoy, and log on!</p>]></description><link>http://benpoole.com/weblog/200907142106</link><dc:subject>java, logging, lotus notes domino</dc:subject><dc:creator>Ben Poole</dc:creator><guid isPermaLink="true">http://benpoole.com/weblog/200907142106</guid><comments>http://benpoole.com/weblog/200907142106#comments</comments></item><item><title>Galileo is here!</title><pubDate>Wed, 24 Jun 2009 14:49 +0100</pubDate><description><![CDATA<p><a href="http://www.eclipse.org/galileo/">Galileo</a>—Eclipse 3.5—is here! The annual Eclipse release has happened, and there’s lots bundled up in that there Eclipse framework nowadays. Let us peruse the <a href=”http://www.eclipse.org/downloads/“>downloads</a> page:</p> <ol> <li><i>Eclipse IDE for C/C++ Developers (78 MB)</i> Uh huh. 78 meg? Wow, that’s pretty small.</li> <li><i>Eclipse IDE for Java Developers (91 MB)</i> Apparently this includes Mylyn, which is “essential”. Hmm.</li> <li><i>Eclipse IDE for Java EE Developers (<strong>187 MB</strong></i>) ’Nuff said :-)</li> </ol> <p>More seriously, the Eclipse platform is still my <abbr title="Integrated Development Environment">IDE</abbr> of choice for Java development, and I enjoy working with it (so long as things don’t go wrong in the Eclipse Workspace). Time to get downloading!</p> <p>(PS predictably, <a href="http://twitter.com/eclipsegalileo">on twitter too</a>!)</p> <p><em>Update</em>: actually, <a href="http://eclipse.org/mylyn/">Mylyn</a> really <strong>is</strong> useful!</p>]></description><link>http://benpoole.com/weblog/200906240649</link><dc:subject>eclipse galileo</dc:subject><dc:creator>Ben Poole</dc:creator><guid isPermaLink="true">http://benpoole.com/weblog/200906240649</guid><comments>http://benpoole.com/weblog/200906240649#comments</comments></item><item><title>Some useful Domino Java code?</title><pubDate>Fri, 12 Jun 2009 11:39 +0100</pubDate><description><![CDATA<p><a href="https://twitter.com/stickfight/statuses/2129738543">I am told</a> that this could be useful to other newb Java Domino coders. Basically, it’s a wee chunk of code to drop into a Domino Java agent, which sets out a recommended approach for document looping and the whole <code>recycle()</code> thing. I don’t know if it’s utterly correct, and I really don’t want to get into the innards of the Domino JVM—<a href="http://www.bobzblog.com/tuxedoguy.nsf/dx/geek-o-terica-5-taking-out-the-garbage-java" title="Bob Balaban, Geek-o-Terica 5: Taking out the Garbage (Java)">Bob is doing sterling work there</a>—but It Works For Me.</p> <pre> // Here we iterate documents in a view<br /> try<br /> {<br /> Document doc = view.getFirstDocument();<br /> Document docTmp = null;<br /> <br /> while (null != doc)<br /> {<br /> // Your doc processing code here<br /> <br /> docTmp = view.getNextDocument(doc);<br /> <br /> doc.save(); // assuming changes<br /> doc.recycle();<br /> doc = docTmp;<br /> }<br /> <br /> /*<br /> * Could do this in 'finally' if you like,<br /> * but you need to declare objects<br /> * outside the try&hellip; catch in that case<br /> */<br /> if (null != doc) doc.recycle();<br /> if (null != docTmp) docTmp.recycle();<br /> if (null != session) session.recycle();<br /> }<br /> catch (NotesException e)<br /> {<br /> // TODO error handling<br /> }<br /> finally<br /> {<br /> try<br /> {<br /> view.recycle();<br /> db.recycle();<br /> }<br /> catch (NotesException n)<br /> {<br /> // Don't care<br /> }<br /> } </pre><p>Hope this is useful for someone. Feel free to comment away and improve!</p>]></description><link>http://benpoole.com/weblog/200906120339</link><dc:subject>lotus notes domino, java</dc:subject><dc:creator>Ben Poole</dc:creator><guid isPermaLink="true">http://benpoole.com/weblog/200906120339</guid><comments>http://benpoole.com/weblog/200906120339#comments</comments></item>	</channel>
</rss>
