<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Oisín Hurley&apos;s Weblog</title>
      <link>http://blogs.iona.com/ohurley/</link>
      <description>SOA, Eclipse Tools, Open Source and SCA</description>
      <language>en</language>
      <copyright>Copyright 2008</copyright>
      <lastBuildDate>Fri, 26 Sep 2008 16:33:02 +0000</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>Blog move...</title>
         <description><![CDATA[This blog is moving to <a href="http://oisinh.wordpress.com/">http://oisinh.wordpress.com</a> and will resume with a slightly different focus. See you there!]]></description>
         <link>http://blogs.iona.com/ohurley/2008/09/blog_move.html</link>
         <guid>http://blogs.iona.com/ohurley/2008/09/blog_move.html</guid>
        
        
         <pubDate>Fri, 26 Sep 2008 16:33:02 +0000</pubDate>
      </item>
            <item>
         <title>Web 2.0 == (Web 1.0 + Pies)</title>
         <description><![CDATA[It's official. Web 1.0 has grown up, become more attractive, but behind  the scenes has been cramming in the pies. Average web page size has <a href="http://www.websiteoptimization.com/speed/tweak/average-web-page/"><b>tripled</b> in the last five years</a>.  ]]></description>
         <link>http://blogs.iona.com/ohurley/2008/04/web_20_web_10_pies.html</link>
         <guid>http://blogs.iona.com/ohurley/2008/04/web_20_web_10_pies.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">web</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">bloat</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">pies</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">web</category>
        
         <pubDate>Tue, 29 Apr 2008 13:49:40 +0000</pubDate>
      </item>
            <item>
         <title>WSDL Revisited</title>
         <description><![CDATA[<p>Waay back in May last year, I wrote a little blog entry <a href="http://blogs.iona.com/ohurley/2007/05/this_is_not_wsdl.html">taking WSDL and associated tools to task</a>. You can imagine my delight when my esteemed colleague <a href="http://gnodet.blogspot.com/">Guillaume Nodet</a> sent me a link to a Google Code project called <a href="http://code.google.com/p/relax-ws/">Relax-WS</a>.</p>
<p>The author states</p><p>
<oisinblockquote><i>
WSDL is a key technology for SOA, and yet creating and editing these files is about as much fun as straightening all the noodles in a bowl of spaghetti with a pair of tweezers.</i>
</oisinblockquote></p>
<p>and goes on to promise</p>
<oisinblockquote><i>
Relax-WS aims to provide a simple, programmer-friendly syntax, without losing any of the metadata</i>
</oisinblockquote>
</p><p>
all good, right and true, in my opinion. I would go even further on the last quote there and say that Relax-WS should aim to provide the simple, programmer-friendly syntax, but should also <i>lose any metadata that is not necessary</i> and <i>add metadata where it is missing from WSDL</i>.
</p>
<p>
One comment I have on the Relax-WS approach is a reaction to the sample
code that is on the front page</p><p>
<verbatim>
service Hello {<br/>
&nbsp;&nbsp;port {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;operation SayHello {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;in {<br/>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;element name {xsd:string}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;out {<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;element message {xsd:string}      <br/>      
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;&nbsp;&nbsp;}<br/>
&nbsp;&nbsp;}<br/>
}<br/>
</verbatim> </p><p>
What's wrong with this, you might ask? It's clear and concise. Indeed it is, say I, and there is nothing at all <i>wrong</i> here, but the bit that makes me somewhat uncomfortable is the use of the <tt>service</tt> term there. Once you start to mention services, you are looking at a crossover from definition of schema and operation to a <i>service provider</i> definition, which necessarily leads on to having concrete pseudo-physical resource details in the Relax-WS file. What's a pseudo-physical resource? It's an artifact that has a constraints on a machine - so things like ports, databases, file systems, etc fall under this category. If you nail down your pseudo-physical resources at development time, then you are in for a reduced amount of fun when it comes to deployment. Ideally, you bind all those pp-resource details at the last minute (delay your decisions -- a lean maxim), so when you are developing you should set up the capability to discover those details at start up time from a fixed place, rather than baking them in.</p>
<p> A good example would be coding a <a href="http://www.springframework.org/">Spring</a> application for the <a href="http://servicemix.apache.org/SMX4/index.html">ServiceMix 4</a> kernel, burning in the configuration into the bundle, and then binding it to a little properties file that contains the pp-resource specifics for the particular [virtual] machine upon which it is to be hosted. </p>
<p>Anyway - fair play to the author of <a href="http://code.google.com/p/relax-ws/">Relax-WS</a> for taking this on. I'm sure there will be take-up of  the project.</p>]]></description>
         <link>http://blogs.iona.com/ohurley/2008/02/wsdl_revisited_1.html</link>
         <guid>http://blogs.iona.com/ohurley/2008/02/wsdl_revisited_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Open Source</category>
                  <category domain="http://www.sixapart.com/ns/types#category">SOA</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Services</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Services</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">SOA</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Tools</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">WSDL</category>
        
         <pubDate>Mon, 04 Feb 2008 10:57:47 +0000</pubDate>
      </item>
            <item>
         <title>Awesome Regex Ninja</title>
         <description><![CDATA[<p><code>
^(0*|-?0*[1-9]\d{0,8}|-?0*1\d{9}|-?0*20\d{8}|-?0*21[0-3]\d{7}|-?0*214[0-6]\d
{6}|-?0*2147[0-3]\d{5}|-?0*21474[0-7]\d{4}|-?0*214748[0-2]\d{3}|-?0*2147483[
0-5]\d{2}|-?0*21474836[0-3]\d|-?0*214748364[0-7]|-0*2147483648)$
</code></p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/12/awesome_regex_ninja.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/12/awesome_regex_ninja.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Coding</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Coding</category>
        
         <pubDate>Thu, 20 Dec 2007 11:06:48 +0000</pubDate>
      </item>
            <item>
         <title>Javapolis 2007 - The Techie Bits</title>
         <description><![CDATA[<table>
<tr><td>
<img alt="mpis300x400.jpg" src="http://blogs.iona.com/ohurley/mpis300x400.jpg" width="300" height="400" />
</td><td>
<p>
I'm just back from <a href="http://www.javapolis.com">Javapolis</a> in <a href="http://en.wikipedia.org/wiki/Antwerp">Antwerp<a/>. Javapolis is a conference put together by the <a href="http://www.bejug.org/confluenceBeJUG/display/BEJUG06/Home">BEJUG</a>, Antwerp is a big city in <a href="http://en.wikipedia.org/wiki/Belgium">Belgium</a> and the second largest seaport in Europe . For a conference put together by a group of folks that are not pro conference makers, it was pretty impressive. The fact they have kept the price down to less than &euro;300 is particularly amazing.
</p></td></tr></table><p>
I was there to check out the conference, but even more importantly to get to have a chat with some of our new committers on the <a href="http://www.eclipse.org/stp">Eclipse SOA Tools Project</a>.  We've had a number of new components just added to source control (more about that in another entry) and now I was getting the chance to meet some of these developers for the first time. Even better, I got to hang out with <a href="http://bsnyderblog.blogspot.com/">Bruce Snyder</a>, open source aficionado extraordinaire, and <b>Stephen McNamara</b>, a buddy of long standing and enterprise survivor.
</p>
<p>
First off the bat I had a chat with <a href="http://markclittle.blogspot.com/">Mark Little</a> whom you may know from JBoss ESB and the world of transactions in general.  We marvelled at how <b>world+dog</b> is currently refactoring their <i>{insert runtime tech of choice}</i> to be composed platforms using <a href="http://gravity.sourceforge.net/servicebinder/osginutshell.html">OSGi</a> bundles. This is going to be very interesting as it will open up the containers, which will hopefully bring more control to the customer platform developers on the one hand, and introduce with the other a whole raft of new interoperability issues :)
</p>
<p>
<a href="http://blogs.sun.com/jag/">James Gosling</a>'s keynote was a round-up of everything that has happened in Java land for the last year. It's easy to see where his interest lies - realtime java and the spread of java-controlled devices, using <a href="http://www.sunspotworld.com/">SunSpots</a> and similar tech.  He also spoke of the mobile services architecture (<a href="http://jcp.org/aboutJava/communityprocess/final/jsr248/index.html">JSR248</a>) and how that was to be a "<i>grown-up CLDC</i>". I polled a few individuals over the next few hours and there was a keen interest in seeing how Google and the <a href="http://www.openhandsetalliance.com/">OHA</a> will eat Sun's lunch on this one. 
</p><p>
Key point for me was that mobility is coming of age at last, something like 2 years after we pulled our enterprise-mobility product. Timing is everything after all.
</p><p>
Netbeans 6 hit the presses during the week, and James was keen to point out some of the new and shinies in the bag. Enhanced mobility support was one thing, an holistic Java model that makes for keen context-sensitive refactorings, REST service development tools and advances in report design and generation were some of the things he mentioned. I'll be looking at the REST tools, because we are developing <a href="http://wiki.eclipse.org/REST_support_in_STP">REST tools in STP</a> too, but the Eclipse refactoring and reporting facilities seem to be at least a couple of years ahead in terms of feature comparison. I've not using the mobility gear in Netbeans or Eclipse, so no comment on that.
</p><p>
He also mentioned <a href="http://www.sun.com/software/javafx/index.jsp">JavaFX</a>, and later on in the week I attended a talk/demo on it. It looked faintly interesting until I spoke to the guy sitting next to me. He had attended a talk at OSCON where the JavaFX demo was followed up by a <a href="http://labs.adobe.com/technologies/flex/">Flex</a> demo which blew it out of the water totally - the SUN demo person looked pretty squirmy by his account. Flex is very very impressive, but perhaps JavaFX may beat it on the phones.
</p>
<center>
<img alt="ow2stand500x277.jpg" src="http://blogs.iona.com/ohurley/ow2stand500x277.jpg" width="500" height="276" />
</center>
<p>
The guys from <a href="http://www.ow2.org/">OW2</a> had a talk about all of the stuff that they have and how it can all be linked together. It had <a href="http://en.wikipedia.org/wiki/Business_process_management">BPM</a>, <a href="http://en.wikipedia.org/wiki/Business_activity_monitoring">BAM, <a href="http://en.wikipedia.org/wiki/Service_oriented_architecture">SOA</a>, portals, workflow, monitoring and all other aspects of the enterprise buddha nature. My poor brain filled up early in the talk, so I will need to look into it in bite-size chunks later.  I'm delighted that <a href="http://www.eclipse.org/stp">Eclipse STP</a> counts among its committers a number of individuals that are involved in the OW2 community-- <b>Christophe Hamerling</b>, <b>Adrian Mos</b>, <b>Andrea Zoppello</b>, to name but a few and of course <b>Alain Boulze</b>, who is an STP PMC member.  
</p>
<p>
In between the corridor work  I managed to get to a few more talks. I experienced a good quality brain melt at <a href="http://en.wikipedia.org/wiki/Joshua_Bloch">Joshua Bloch</a>'s closures talk and attended a very informative talk on <a href="http://jcp.org/en/jsr/detail?id=311">JSR311</a> and REST from <a href="http://blogs.sun.com/sandoz/">Paul Sandoz</a>. <b>Andrea Zoppello</b> did a very interesting demo on going from <a href="http://www.bpmn.org/">BPMN</a> to runtime monitoring at the Eclipse stand and I got to catch up with the Eclipse stalwarts <a href="http://dev.eclipse.org/blogs/wayne/">Wayne Beaton</a> and <a href="http://www.eclipse.org/org/foundation/staff.php">Ralph M&uuml;ller</a>. In the photo below you can see the inimitable <b>Bruce Snyder</b> being totally mobbed by <b>adoring geek fans</b> after his talk on <a href="http://servicemix.apache.org">ServiceMix</a> and <a href="http://activemq.apache.org/camel">Camel</a>. <i>[Note - picture is blurry due to awesome flux of worshippon particles]</i>
</p>
<center>
<img alt="ow2stand500x313.jpg" align="center" src="http://blogs.iona.com/ohurley/ow2stand500x313.jpg" width="500" height="312" />
</center>
<p>
If you are in the market for a Java conference, and a bit short on budget, Javapolis is well worth your while, methinks. I would just ask them to do two things for next year - first, open up the program to allow submissions from whoever wants to submit java related stuff; second, put some evaluation sheets out there guys!  That panel with Bloch, Gafter, Gosling, <i>et alii</i> was really really terrible!  Having Bloch and Gosling waffle on about <tt>unsigned int</tt> for nearly 20 minutes was a total waste of time. Got to hand the <b>beachball of blame</b> to the moderator there - should have put the squeeze on them, <a href="http://www.javapolis.com/confluence/display/JP07/Carl+Quinn">Carl</a>!
</p>
<p><i>For photos, hit <a href="http://www.flickr.com/">Flickr</a> with a keyword search on <tt>JavaPolis</tt>.</i></p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/12/javapolis_2007_the_techie_bits_1.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/12/javapolis_2007_the_techie_bits_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Conferences</category>
                  <category domain="http://www.sixapart.com/ns/types#category">java</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Conference</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Java</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">OpenSource</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Opinion</category>
        
         <pubDate>Mon, 17 Dec 2007 17:14:04 +0000</pubDate>
      </item>
            <item>
         <title><![CDATA[It's D&eacute;j&agrave; Vu All Over Again]]></title>
         <description><![CDATA[<p>Heard of <a href="http://developers.facebook.com/thrift/">Thrift</a>? It's a <a href="http://www.facebook.com">Facebook</a>-developed system that allows <b>services</b> to be defined in a language-independent manner.</p>
<p><a href="http://en.wikipedia.org/wiki/CORBA">Didn't we do this already, a while back?</a></p>
<p>It's slated for <a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200711.mbox/%3c4B6D3FD0996CC840AEE0BF81F7ED510601DF392A@sf2pmxb02.TheFacebook.com%3e">contribution to Apache</a> too.</p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/11/its_deja_vu_all_over_again.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/11/its_deja_vu_all_over_again.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Services</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">OpenSource</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Opinion</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Services</category>
        
         <pubDate>Thu, 29 Nov 2007 09:26:49 +0000</pubDate>
      </item>
            <item>
         <title>Eclipse Provisioning Platform</title>
         <description><![CDATA[<p>
At the <a href="http://www.eclipsecon.org/summiteurope2007/">Eclipse Summit 2007</a>, <a href="http://dev.eclipse.org/blogs/jeff">Jeff McAffer</a> gave a presentation <i>[link to slides not available yet]</i>  on what has been happening with <a href="http://www.eclipse.org/equinox">Equinox</a>. I missed the talk itself, but later on I had
lunch with him, <a href="http://www.eclipsist.org/eclipsist/2007/people.do?page=naci_dai">Naci Dai</a> of <a href="http://www.eclipse.org/webtools">WebTools</a> and Jerry Preissler of  <a href="http://www.eclipse.org/swordfish/">Swordfish</a> and we talked about the <a href="http://wiki.eclipse.org/Equinox_p2_Getting_Started">Eclipse Provisioning Project, aka <b>p2</b></a></p>
<p>
<b>p2</b> is a framework which is all about configuring things and putting them somewhere. That's as generic as I can make the definition :) In the <a href="http://wiki.eclipse.org/Equinox_p2_Getting_Started">example on the website</a>, p2 is being used to move bundles around. The <a href="http://www.eclipse.org/stp">SoaTools</a>, <a href="http://www.eclipse.org/swordfish">Swordfish</a> and <a href="http://www.eclipse.org/webtools">WebTools</a> projects already do this kind of thing, and we have a set of deployment frameworks which allow us to configure and deliver things (WAR files for example) to different places (server runtimes for example). That's
why we are interested, especially since there are visible moves in the direction of OSGi based runtimes for hosting Services .</p>
<p>
I'm just at the point where I need to drill into the information on the web. As per usual, I'm confused about how p2 and <a href="http://wiki.eclipse.org/Buckminster">Buckminster</a> appear to do exactly the same thing. And I want to see how p2 matches up with the <a href="http://wiki.eclipse.org/SOAS_Refactor">SoaTools SOAS component</a>. If we could do something around extending p2 (if appropriate) then we could reduce the STP workload a bit. I guess that WTP and Swordfish are thinking the same thing.
</p><p>
<i>I feel a workshop coming on here :)</i>
</p><p>
A tangential point: as far as I know, and I am open to correction here, the p2 project was brought into the Eclipse ecosystem as an effort to replace the aging <b>Update Manager</b> mechanisms. Certainly over the course of the last couple of years, many interesting behaviours of the UM have <a href="http://www.eclipsezone.com/eclipse/forums/t78093.html">come to light</a>, but it might have been a good idea to fix those in conjunction with starting a new development effort. As per usual, if you have patches, feel free to open a bugzilla :)
</p><p>
Another tangential point: there is a project proposal called <a href="http://www.eclipse.org/proposals/riena/">Riena</a> which will also be interested in the p2 capabilities. I don't yet understand what Riena is trying to do - all I know is that it is about 'smart clients', the committers are mostly tall, and that they all wear the same teeshirts. When I find out more I'll let you know. In the meantime <a href="http://wiki.eclipse.org/Equinox_p2">visit the top-level page on wiki for p2 for details</a>.
</p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/10/eclipse_provisioning_platform.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/10/eclipse_provisioning_platform.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Conferences</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Open Source</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Provisioning</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Provisioning</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">STP</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Swordfish</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">WTP</category>
        
         <pubDate>Fri, 12 Oct 2007 15:49:36 +0000</pubDate>
      </item>
            <item>
         <title>Some things I learned at the Eclipse Summit Europe 2007</title>
         <description><![CDATA[<p>Eclipse users and developers know that the Eclipse platform is a bit of beast - there is just so much in there that if you don't get the chance to poke your head out of your own <em>personal Eclipse-interaction light cone</em>, you can miss out on some cool stuff. And it turns out that the best way to do that is to come to these kind of conferences :)  Here's some things I found out about yesterday.</p>
<p>
<b>Plugin Spy</b><br/>
Select something in the UI, hit <b>Alt+Shift+F1</b>, and you get a window containing an introspection of the current widget/part that you have selected. Check out the <a href="http://www.eclipse.org/pde/incubator/spy/">PDE Incubator</a> page, and a <a href="http://mea-bloga.blogspot.com/2007/08/introspecting-eclipse.html">blog entry from Chris</a>. If you are using <a href="http://download.eclipse.org/eclipse/downloads/drops/S-3.4M2-200709210919/index.php#EclipseSDK">Eclipse 3.4M2</a> or later, you will find this feature already built-in.
</p>
<p>
<b>Clean Ups</b><br/>
I use <a href="http://checkstyle.sourceforge.net/">Checkstyle</a> in most of my project work, and it and I have an uneasy relationship. The sort of one where the dishes get broken and people come around to bring the pets away. I have always whined that if Checkstyle is so smart, why doesn't it get rid of that trailing space it spotted for me and stop bothering me?  Well, it can't do that, but <em>Eclipse Clean Ups</em> can. Woot!
</p>
<p>A <em>Clean Up</em> is just a collection of refactorings that you use regularly on your code to keep it squeaky. You can run 'em manually, or have them run automatically when you save a Java file. Go to <a href="http://www.ibm.com/developerworks/library/os-eclipse-clean/index.html">this developerworks article</a> to find out more.</p>
<p>
<b>EclEmma</b><br/>
If you are familiar with the <a href="http://emma.sourceforge.net/">Emma Project</a> then you will have probably guessed that this is a test coverage tool for Eclipse, based upon Emma. I've always found test coverage to be an invaluable tool for showing you where the great, gaping, black holes of non-deterministic behaviour reside in your code. There's a lot of tools that can do coverage, and there are Eclipse integrations at varying levels of quality. What I liked about <a href="http://www.eclemma.org/">EclEmma</a> is that it is quick and straightforward to use on a single Eclipse project, and gives me the results fast. Although the results are not always welcome  :)
</p>
<p><b>Update:</b> Jeff McAffer's <a href="http://www.eclipsecon.org/summiteurope2007/presentations/ESE2007_W1210_EclipseUpdate.pdf">Eclipse Update Talk <i>[pdf link]</i></a> has details of <b>Plug-in Spy</b> and <b>Clean Ups</b>.</p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/10/eclipse_summit_2007_first_day.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/10/eclipse_summit_2007_first_day.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Conferences</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Open Source</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Coding</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Java</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Refactoring</category>
        
         <pubDate>Thu, 11 Oct 2007 07:07:50 +0000</pubDate>
      </item>
            <item>
         <title>Is your code C.R.A.P.?</title>
         <description><![CDATA[<p>
Just got a link this morning to <a href="http://www.artima.com/weblogs/viewpost.jsp?thread=215899">the C.R.A.P. metric</a> and the <a href="http://www.junitfactory.com/articles/crap4j/">crap4j</a> Eclipse plugin. This humourously-named approach mixes up cyclomatic complexity and code coverage to give a number that is your code's CRAP index. Generally speaking, you can lower your CRAP index either by adding automated tests or by refactoring to reduce complexity, or both.
</p>
<p>Apparently crap4j can also estimate your <i>CRAP Load</i> <i>(we've beaten this one to death - ed.)</i>, in which it gives an indication of how many tests you will need to write to reduce the CRAP index to less than an arbitrary bar of 30.
</p><p>
<b>Update:</b> tried it out, and it seems interesting - I can understand the concepts immediately and it has an amusing toilet paper icon on the menu. Here's a screenshot of the <em>CRAP Report</em> that it produces. 
</p>
<img alt="crappy.png" align="center" src="http://blogs.iona.com/ohurley/crappy.png" width="350" height="350" />
<p>
In the case of this anonymous component, you can see that the <em>crapometer</em> weighs in at 14.91% - an artitrary figure that tells me that a little over one in seven of the methods in the component are, well, crappy.
</p>
<img alt="crapload.png" align="center" src="http://blogs.iona.com/ohurley/crapload.png" width="450" height="160" />
<p>The <em>CRAP Load</em> figure above hints that maybe about 14 tests would do the trick in reducing the CRAP figure of a complex method with 0% coverage.</p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/10/is_your_code_crap_1.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/10/is_your_code_crap_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Testing</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Coding</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Testing</category>
        
         <pubDate>Tue, 09 Oct 2007 08:19:30 +0000</pubDate>
      </item>
            <item>
         <title>RESTafarianism and EMF</title>
         <description><![CDATA[<p>
I had the pleasure to share a drink and a chat last night with <a href="http://ed-merks.blogspot.com/">Ed Merks</a>, the <a href="http://www.eclipse.org/modeling/emf/">EMF Project</a> lead. One of the interesting things that he brought up was his  efforts to extend the EMF <tt>URIHandlers</tt> to be more REST-like. He mentions this <a href="http://ed-merks.blogspot.com/2007/09/world-reflected-in-eyes-of-another.html">in a blog entry</a> - you will find the reference after the picture of the hibiscus. There are some more techcore details at the <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=191077">Bugzilla entry</a> that hosts the patch.
</p>
<p>
This work is a big thing for EMF, in my opinion. Putting this together with a simple <tt>HttpService</tt> instance in an OSGi container can give you the basis for remotely manipulable models, with most of the work done by EMF itself. This opens up the field for Rich Internet Applications (blach - another buzzword) that can interact with hosted EMF models without having to depend on having an EMF library on the client side. 
</p>
<p>The <a href="http://www.iona.com/products/artix/registry_repository.htm?WT.mc_id=125788">Artix Repository</a> product that <a href="http://www.iona.com">IONA</a> ships has done something very similar, but we have created the RESTful interactions <i>outside</i> of EMF. It's cool to see this kind of capability moving into the core.</p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/10/restafarianism_and_emf.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/10/restafarianism_and_emf.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Open Source</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Services</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">EMF</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Repository</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">REST</category>
        
         <pubDate>Tue, 09 Oct 2007 07:26:37 +0000</pubDate>
      </item>
            <item>
         <title>Off to Eclipse Summit Europe</title>
         <description><![CDATA[<p>I'm waiting for my flight to Frankfurt to attend the <a href="http://www.eclipsecon.org/summiteurope2007">Eclipse Summit Europe</a> that is being held in sunny <a href="">Ludwigsburg</a>, in Germany. Due to a typical <b>pebkac</b> error, I'll be staying in 3 hotels over the 5 days that I will be there :) 
</p>
<p>The Euro Summit is an interesting  conference - the content is usually good, the venues conducive to meeting people and of course the German beer is without peer.  This adds up to a fun-filled few days. During the conference, <b>Adrian</b> from <a href="http://www.eclipse.org/stp">STP</a> will be updating us on what's new and noteworthy on the project, and of course bringing us up to date on the old material too. One of the evenings will contain an  <a href="http://www.eclipse.org/stp">STP</a> <b>BoF</b>, although the date has to be confirmed.</p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/10/off_to_eclipse_summit_europe.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/10/off_to_eclipse_summit_europe.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Conferences</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Open Source</category>
                  <category domain="http://www.sixapart.com/ns/types#category">SOA</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Conference</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">STP</category>
        
         <pubDate>Mon, 08 Oct 2007 10:08:45 +0000</pubDate>
      </item>
            <item>
         <title>An Infestation of Snails (was: Java Annotation Madness)</title>
         <description><![CDATA[<p>
I was just reading an <a href="http://www.theserverside.com/tt/articles/article.tss?l=JPAObjectModel&asrc=EM_NLN_2215685&uid=2569041">article on JPA</a>, posted on <a href="http://www.theserverside.com">TheServerSide</a>. In it we see a simple 'real-world' example - a mocked-up blog application. The object model looked fine, the DB schema representation looked fine, but then I got to see the Java, annotated JPA-stylee.
</p><p>
<pre>
import javax.persistence.*;

@MappedSuperclass
@EntityListeners({ModelListener.class})
public abstract class ModelBase {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private Long id;
    @Version
    @Column(name="version")
    private Integer version;
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="created_by_user_id")
    private User createdByUser;
    @Temporal(value = TemporalType.TIMESTAMP)
    @Column(name = "date_created", nullable = false)
    private Date dateCreated;
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="updated_by_user_id")
    private User updatedByUser;
    @Temporal(value = TemporalType.TIMESTAMP)
    @Column(name = "date_updated", nullable = false)
    private Date dateUpdated;
    // methods removed for readability
}
</pre>
</p>
<p>
I got a bit of a chuckle out of the comment at the end of class declaration, but my overall feeling was one of giddiness at the sight of Annotations Gone Mad.  It's fashionable, it appears, to bang in as many annotations as possible in Java 'frameworks'. If you have dealt with debugging C# webservices clients, you might recall the brain damage that was introduced when trying to fish through dozens of C#   annotations in the generated code. Is this going to happen all over again, but for Java this time? 
</p><p>
My particular complaint is not about using annotations, which I do think are wickedly useful for getting rid of the omnipresent and immiscible configuration APIs in thousands of products.  Being able to inject values into class members is brilliant. There are even some gnarly uses where annotation declarations may themselves have annotations (go look at the <a href="http://activemq.apache.org/camel/">Apache Camel</a> source code). But using annotations to tie Java programs to what are irreducible and unmappable resources - ports, URLs, even DB tables - doesn't make a lick of sense to me.
</p>
<p><b>Update:</b> Benson Margulies has given this condition a name - <i>an infestation of snails (@)</i> - in a <a href="http://www.nabble.com/Is-the-idea-of-wsdl2java-%28aegis%29-really-useful--tf4498297.html">cxf-dev</a> posting. This is so good I had to change the name of this entry.</p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/09/java_annotation_madness_1.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/09/java_annotation_madness_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">java</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Java</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Opinion</category>
        
         <pubDate>Wed, 19 Sep 2007 11:55:58 +0000</pubDate>
      </item>
            <item>
         <title>TSS Java Symposium Barcelona</title>
         <description><![CDATA[&<p>
I got a chance to attend, and <a href="http://javasymposium.techtarget.com/europe/speakers.html#OHurley">speak</a;, at <a href="http://javasymposium.techtarget.com/">The ServerSide Java Symposium</a> in Barcelona at the end of June. The talk I gave was about how Enterprise Software can be <i>delivered</i> using  Open Source as the basis for satisfying some of the most common Enterprise Software requirements. I wasn't talking about business logic here -- I was talking about the nonbiosphere that surrounds a piece of Enterprise software, including process automation support, addressing chargeback in a transparent manner,  managing middleware heterogeneity. I also guaranteed the listeners that I wouldn't use any buzzwords :)</p>
<p>
You can <a href="http://blogs.iona.com/ohurley/enterprise_oss.pdf">download the slides and notes</a> and check it out. From the top of the room, I observed the reaction: a healthy mix of boredom, horror, torpor, confusion, outrage, interest, catatonia and crackberry tapping. After the talk, I did get some compliments and interesting questions. No pitchforks and torches, so that was good.</p>
<p>On the subject of <b>pitchforks and torches</b>, I was lucky enough to be invited to sit on a <a href="http://javasymposium.techtarget.com/europe/sessions.html#SOAPanel">SOA Industry Leaders Panel</a> with <a href="http://martinfowler.com">Martin Fowler</a> and <a href="http://www.eaipatterns.com/gregor.html">Gregor Hohpe</a>. It was an interesting thing to site between those two guys, whose books and articles I've avidly consumed in the past. Mainly I worried about looking like a total idiot. According to <a href="http://blog.decaresystems.ie/index.php/2007/06/27/theserverside-java-symposium-barcelona-day-1">Jay
at DeCare Systems</a>, I did ok - if you read that entry, you'll see the torches reference I made earlier.The whole thing was filmed, so perhaps we will
get to see it online sometime. The panel moderator, the inimitable <a href="http://blogs.tedneward.com/">Ted Neward</a>, gets my vote for best panel mod evah, coaxing some excellent tough questions from what turned out to be a good audience. It was with a mental sigh of relief from me that Gregor got in first on the inevitable <i>What is a Service, anyway?</i>.
<p>
<b>Update</b> - check out <a href="http://blogs.iona.com/sos/2007/07/hola_barcelona_tales_from_the.html">Ade's experiences at TSSJS</a></p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/07/tss_java_symposium_barcelona_1.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/07/tss_java_symposium_barcelona_1.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Conferences</category>
                  <category domain="http://www.sixapart.com/ns/types#category">Open Source</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Enterprise</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">SOA</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Talks</category>
        
         <pubDate>Thu, 12 Jul 2007 10:20:07 +0000</pubDate>
      </item>
            <item>
         <title>Eclipse Europa has Shipped</title>
         <description><![CDATA[<p>
Well, it shipped nearly a couple of weeks now, and I've been taking a bit of breather and getting back in touch with some other things that get left by-the-by as we went through the release process. <a href="http://eclipse-projects.blogspot.com/">Bjorn</a> and the legal team deserve great praise for their mammoth efforts in getting everything lined up for those of us who delivered projects.</p>
<p>From the perspective of <a href="http://www.eclipse.org/stp">SOA Tools</a>, it's a time to gather our wits and make some plans, with the help of the community. I'm glad to say that over the last few months, there has been a considerable amount of interest in the project from a number of organizations that wish to contribute code and expertise. The PMC's challenge is how to make sure that all these prospective committers can work together in a way that is conducive to developing the best open source tools and frameworks.</p>
<p>Enter the <b>Incubator</b>. This is to be an <a href="http://www.eclipse.org/stp">STP</a> sub-project (it's in pre-proposal phase right now), which I hope will address our challenge. It works like this -- a number of organizations decide they would like to contribute some code, but in each case, they have code that does the same or similar things. The best thing for the project is that the committers come together, bring their solutions to the table, re-architecting if necessary, and producing a joint vision for the merged code. The 'table' in that metaphor is the <b>Incubator</b> sub-project. Once the technical vision has been constructed and agreed upon, and a draft plan put in place, any work that has taken place in the <b>Incubator</b> is ready to 'graduate', that is, move to full <a href="http://www.eclipse.org/stp">STP</a> sub-project status.</p>
<p>It's also time to let us know what you would like to see happening in the current areas of the project - let us know on the <b>dev</b> list or the <b>newsgroup</b>!</p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/07/eclipse_europa_has_shipped.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/07/eclipse_europa_has_shipped.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#category">SOA</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">STP</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">Tools</category>
        
         <pubDate>Thu, 12 Jul 2007 10:05:37 +0000</pubDate>
      </item>
            <item>
         <title>Eclipse nears Europa release</title>
         <description><![CDATA[<p>
It's getting <b>near</b> now - end of this week we are good to go for the Eclipse Europa release.</p>
<p>I'm looking forward to getting this out the door so that we can get back into a planning mode next week!</p>]]></description>
         <link>http://blogs.iona.com/ohurley/2007/06/eclipse_nears_europa_release.html</link>
         <guid>http://blogs.iona.com/ohurley/2007/06/eclipse_nears_europa_release.html</guid>
                  <category domain="http://www.sixapart.com/ns/types#category">Eclipse</category>
        
                  <category domain="http://www.sixapart.com/ns/types#tag">Eclipse</category>
                  <category domain="http://www.sixapart.com/ns/types#tag">STP</category>
        
         <pubDate>Wed, 27 Jun 2007 16:45:06 +0000</pubDate>
      </item>
      
   </channel>
</rss>
