<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software craftsmanship</title>
	<atom:link href="http://blogs.adobe.com/jzitting/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogs.adobe.com/jzitting</link>
	<description>A blog about open source, content technology and the craft of software development.</description>
	<lastBuildDate>Tue, 07 Aug 2012 11:51:20 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Dublin Core archaeology</title>
		<link>http://blogs.adobe.com/jzitting/dublin-core-archaeology/</link>
		<comments>http://blogs.adobe.com/jzitting/dublin-core-archaeology/#comments</comments>
		<pubDate>Tue, 07 Aug 2012 10:31:56 +0000</pubDate>
		<dc:creator>Jukka Zitting</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/jzitting/?p=58</guid>
		<description><![CDATA[Triggered by a question from Stefane Fermigier, I did some digging in the archives of the Dublin Core Metadata Initiative (DCMI). The question was why the Dublin Core terms for different dates use different naming pattern. For example, the date &#8230; <a href="http://blogs.adobe.com/jzitting/dublin-core-archaeology/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://dublincore.org/"><img src="http://blogs.adobe.com/jzitting/files/2012/08/dcmi.jpg" alt="DCMI logo" title="Dublin Core Metadata Initiative" width="410" height="59" class="alignright size-full wp-image-63" /></a>Triggered by a <a title="My question was why / how they came up with such an inconsistent naming scheme (dateSmthg vs. just something)." href="https://twitter.com/sfermigier/status/232743597554937856">question</a> from <a title="@sfermigier" href="https://twitter.com/sfermigier">Stefane Fermigier</a>, I did some digging in the archives of the <a href="http://dublincore.org/">Dublin Core Metadata Initiative</a> (DCMI).</p>
<p>The question was why the Dublin Core terms for different dates use different naming pattern. For example, the date when a document was created is expressed simply with <code><a href="http://dublincore.org/documents/dcmi-terms/#terms-created">created</a></code>, but the dates when one was submitted for review or accepted use an apparent variant of the <a href="http://en.wikipedia.org/wiki/Hungarian_notation">hungarian notation</a>, i.e. <code><a href="http://dublincore.org/documents/dcmi-terms/#terms-dateSubmitted">dateSubmitted</a></code> or <code><a href="http://dublincore.org/documents/dcmi-terms/#terms-dateAccepted">dateAccepted</a></code>.</p>
<p>It turns out that the <a href="http://dublincore.org/documents/1998/09/dces/">original set</a> of Dublin Core metadata elements from 1998 only contained a single generic date element that was vaguely defined as follows:</p>
<ul>
<li> <code><a href="http://dublincore.org/documents/dcmi-terms/#terms-date">date</a></code> &#8211; A date associated with the creation or availability of the resource.</li>
</ul>
<p>Then a few years later in 2000 the standard group <a href="http://dublincore.org/documents/2000/07/11/dcmes-qualifiers/">introduced</a> the concept of &#8220;qualifiers&#8221; for &#8220;refining&#8221; the definition of a more generic element. The following date qualifiers were specified:</p>
<ul>
<li><code><a href="http://dublincore.org/documents/dcmi-terms/#terms-created">created</a></code> &#8211; Date of creation of the resource.</li>
<li><code><a href="http://dublincore.org/documents/dcmi-terms/#terms-valid">valid</a></code> &#8211; Date (often a range) of validity of a resource.</li>
<li><code><a href="http://dublincore.org/documents/dcmi-terms/#terms-available">available</a></code> &#8211; Date (often a range) that the resource will become or did become available.</li>
<li><code><a href="http://dublincore.org/documents/dcmi-terms/#terms-issued">issued</a></code> &#8211; Date of formal issuance (e.g., publication) of the resource.</li>
<li><code><a href="http://dublincore.org/documents/dcmi-terms/#terms-modified">modified</a></code> &#8211; Date on which the resource was changed.</li>
</ul>
<p>Another two years down the line, in 2002, the standards group <a href="http://dublincore.org/usage/decisions/2002/2002-01/">adopts</a> a nice change and status tracking mechanism and declares to &#8220;all legacy Elements and Element Refinements the status of Recommended&#8221;. That makes tracking any further changes pretty easy.</p>
<p>For example, later that year two new date refinements were proposed as <code><a href="http://dublincore.org/usage/meetings/2002/05/submitted-date_prop.html">submitted</a></code> and <code><a href="http://dublincore.org/usage/meetings/2002/05/accepted-date_prop.html">accepted</a></code>. However, when accepting those proposals, the standards group adjusted the terms to <code><a href="http://dublincore.org/usage/decisions/2002/2002-02.submitted.shtml">dateSubmitted</a></code> and <code><a href="http://dublincore.org/usage/decisions/2002/2002-02.accepted.shtml">dateAccepted</a></code> to produce the following two definitions:</p>
<ul>
<li><code><a href="http://dublincore.org/documents/dcmi-terms/#terms-dateSubmitted">dateSubmitted</a></code> &#8211; Date of submission of the resource.</li>
<li><code><a href="http://dublincore.org/documents/dcmi-terms/#terms-dateAccepted">dateAccepted</a></code> &#8211; Date of acceptance of the resource.</li>
</ul>
<p>In the end the question of <em>why</em> exactly a different naming pattern was used remains unclear, but the record shows that the decision to change the names was explicitly made by the standards group ten years ago. Someone closer to the DCMI group might still remember the details of that decision.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/jzitting/dublin-core-archaeology/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JAAS authentication and OSGi</title>
		<link>http://blogs.adobe.com/jzitting/jaas-authentication-and-osgi/</link>
		<comments>http://blogs.adobe.com/jzitting/jaas-authentication-and-osgi/#comments</comments>
		<pubDate>Tue, 15 May 2012 19:11:06 +0000</pubDate>
		<dc:creator>Jukka Zitting</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[jaas]]></category>
		<category><![CDATA[karaf]]></category>
		<category><![CDATA[osgi]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/jzitting/?p=55</guid>
		<description><![CDATA[I was looking at how to best do JAAS-based authentication in an OSGi environment, but didn&#8217;t really find much useful material, so I&#8217;m sharing my findings here in the hope that others will jump in and add anything I may &#8230; <a href="http://blogs.adobe.com/jzitting/jaas-authentication-and-osgi/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I was looking at how to best do JAAS-based authentication in an OSGi environment, but didn&#8217;t really find much useful material, so I&#8217;m sharing my findings here in the hope that others will jump in and add anything I may have missed.</p>
<p>Basically what I want to achieve is being able to run the following code unmodified in an OSGi bundle, and have the <code>login()</code> call access the set of JAAS authentication services that are currently available in the OSGi environment. I should be able to deploy and undeploy such authentication services without any changes to this code or the configuration of the containing bundle.</p>
<pre class="brush: java; title: ; notranslate">
LoginContext context = new LoginContext(...);
context.login();
try {
    ...; // do something
} finally {
    context.logout();
}
</pre>
<p>So far the best thing I&#8217;ve found is the JAAS support that <a href="http://gnodet.blogspot.com/2008/05/jaas-in-osgi.html" title="JAAS in OSGi">Guillaume Nodet described</a> a few years ago. If I understand correctly, the relevant code <a href="http://karaf.apache.org/manual/latest-2.2.x/developers-guide/security-framework.html" title="Karaf security framework">lives in Apache Karaf</a> nowadays, even though also Apache Felix <a href="http://felix.apache.org/site/45-security-framework.html">mentions it</a> and Guillaume&#8217;s original post refers to <a href="http://servicemix.apache.org/" title="Apache ServiceMix">Apache ServiceMix</a>. I&#8217;ve given up hope trying to identify which Maven dependency I should use to get this code.</p>
<p>However, the trouble I see with the <a href="http://svn.apache.org/repos/asf/karaf/tags/karaf-2.0.0/jaas/boot/src/main/java/org/apache/karaf/jaas/boot/ProxyLoginModule.java">ProxyLoginModule</a> class, that seems like the core piece of glue in the Karaf JAAS support, is that it requires the login() call in the client code to explicitly pass the name of the bundle and the contained LoginModule class that are to be used for authentication. That breaks my expectation of zero code or configuration changes in the client bundle for adding or removing new authentication services. Also, it looks like only a single authentication service can be used at a time.</p>
<p>A more promising solution is described in a <a href="http://www.slideshare.net/mfrancis/common-security-services-consolidation-patterns-for-legacy-components-stefan-vladov">presentation</a> that was apparently given by Stefan Vladov in the <a href="http://www.osgi.org/CommunityEvent2011/HomePage">OSGi Community Event 2011</a>. However, I couldn&#8217;t find any references to actual running code that implements that solution.</p>
<p>Please share any relevant pointers or other information in the comments below!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/jzitting/jaas-authentication-and-osgi/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Maven release builds with Jenkins and Git</title>
		<link>http://blogs.adobe.com/jzitting/maven-release-builds-with-jenkins-and-git/</link>
		<comments>http://blogs.adobe.com/jzitting/maven-release-builds-with-jenkins-and-git/#comments</comments>
		<pubDate>Thu, 03 May 2012 14:26:16 +0000</pubDate>
		<dc:creator>Jukka Zitting</dc:creator>
				<category><![CDATA[work]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[jenkins]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/jzitting/?p=48</guid>
		<description><![CDATA[We have a Jenkins continuous integration server that among other things allows us to run Maven release builds centrally using the M2 release plugin for Jenkins. This setup worked fine with Subversion, but needed some tweaking after our recent switch to Git and &#8230; <a href="http://blogs.adobe.com/jzitting/maven-release-builds-with-jenkins-and-git/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>We have a <a href="http://jenkins-ci.org/">Jenkins</a> continuous integration server that among other things allows us to run <a title="Maven release plugin" href="http://maven.apache.org/plugins/maven-release-plugin/">Maven release</a> builds centrally using the <a href="https://wiki.jenkins-ci.org/display/JENKINS/M2+Release+Plugin">M2 release plugin</a> for Jenkins.</p>
<p>This setup worked fine with <a title="Apache Subversion" href="http://subversion.apache.org/">Subversion</a>, but needed some tweaking after our recent switch to <a href="http://git-scm.com/">Git</a> and <a href="https://enterprise.github.com/">github:enterprise</a>. Here&#8217;s what I did to make it work:</p>
<ul>
<li>The release plugin needs write access to the upstream repository, so I had to configure Jenkins to use an ssh key associated with a real account instead of a <a href="http://help.github.com/deploy-keys/">deploy key</a> that only gives read access.</li>
<li>To tie the release commits to the Jenkins server, I configured the global &#8220;user.name&#8221; and &#8220;user.email&#8221; <a href="http://schacon.github.com/git/git-config.html">settings</a> of the Jenkins account to &#8220;Jenkins&#8221; and &#8220;jenkins@&#8230;&#8221;.</li>
<li>Finally, I hit an &#8220;&#8221;ref HEAD is not a symbolic ref&#8221; error caused by Jenkins by default using a <a href="http://schacon.github.com/git/user-manual.html#def_detached_HEAD">detached HEAD</a>. A quick web search uncovered a solution as described by <a href="http://javaadventure.blogspot.com/">Stephen Connolly</a> in a related <a href="https://cloudbees.zendesk.com/entries/20605763-github-jenkins-maven">CloudBees user forum thread</a>. The solution was to set the &#8220;Checkout/merge to local branch (optional)&#8221; option under advanced Git settings on the Jenkins build configuration screen.</li>
</ul>
<p>With that setup in place, we can again cut new releases with just a single click of the &#8220;Schedule Maven Release Build&#8221; button. Nice!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/jzitting/maven-release-builds-with-jenkins-and-git/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Apache Jackrabbit 2.3 is out</title>
		<link>http://blogs.adobe.com/jzitting/apache-jackrabbit-2-3-is-out/</link>
		<comments>http://blogs.adobe.com/jzitting/apache-jackrabbit-2-3-is-out/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 13:57:14 +0000</pubDate>
		<dc:creator>Jukka Zitting</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[jackrabbit]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/jzitting/?p=38</guid>
		<description><![CDATA[Today we announced the release of Apache Jackrabbit 2.3.0. It&#8217;s the result of over nine months of development since the Jackrabbit 2.2 release, and contains changes related to over a hundred new features, improvements and bug fixes. See the release &#8230; <a href="http://blogs.adobe.com/jzitting/apache-jackrabbit-2-3-is-out/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Today we <a href="http://markmail.org/message/ll2tpffc2wdnbffz">announced</a> the release of <a href="http://jackrabbit.apache.org/downloads.html#Downloads-v23">Apache Jackrabbit 2.3.0</a>. It&#8217;s the result of over nine months of development since the Jackrabbit 2.2 release, and contains changes related to over a hundred new features, improvements and bug fixes. See the <a href="http://www.apache.org/dist/jackrabbit/2.3.0/RELEASE-NOTES.txt">release notes</a> for the full details.</p>
<p><a class="lightbox" title="Apache Jackrabbit" href="http://jackrabbit.apache.org/"><img class="aligncenter size-full wp-image-41" title="Apache Jackrabbit" src="http://blogs.adobe.com/jzitting/files/2011/10/jlogo.gif" alt="" width="336" height="100" /></a></p>
<p>Before you rush in an upgrade all your production systems to Jackrabbit 2.3, note that this release has explicitly been marked <em>unstable</em>. In fact all 2.3.x releases will be unstable development releases cut directly from trunk. A stable 2.4 maintenance branch will be created in a few months for production-ready releases. See the <a href="http://jackrabbit.apache.org/jackrabbit-roadmap.html">Jackrabbit roadmap</a> for more details about our new unstable/stable release strategy.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/jzitting/apache-jackrabbit-2-3-is-out/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache Tika issues over time</title>
		<link>http://blogs.adobe.com/jzitting/apache-tika-issues-over-time/</link>
		<comments>http://blogs.adobe.com/jzitting/apache-tika-issues-over-time/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 12:16:56 +0000</pubDate>
		<dc:creator>Jukka Zitting</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[jira]]></category>
		<category><![CDATA[tika]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/jzitting/?p=33</guid>
		<description><![CDATA[Apache Tika is one of the open source projects I actively work on. Tika is just gearing up for a new release, so I wanted to look at where we are in terms of open vs. resolved issues. The report &#8230; <a href="http://blogs.adobe.com/jzitting/apache-tika-issues-over-time/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://tika.apache.org/">Apache Tika</a> is one of the open source projects I actively work on. Tika is just gearing up for a new release, so I wanted to look at where we are in terms of open vs. resolved issues. The report over the entire lifetime of Tika looks pretty nice:</p>
<p style="text-align: center;"><a class="lightbox" title="Apache Tika issues over time" href="http://blogs.adobe.com/jzitting/files/2011/09/tika-issues.png"><img class="aligncenter size-full wp-image-34" title="Apache Tika issues over time" src="http://blogs.adobe.com/jzitting/files/2011/09/tika-issues.png" alt="" width="560" height="350" /></a></p>
<p>The red line shows the number of new issues created, and the green one the number of resolved issues. There are a few small bumps and plateaus along the way, but the overall trajectories are looking very healthy with plenty of new issues coming in and most of them getting resolved at a good rate. Assuming no big surprises, we&#8217;ll be seeing TIKA-1000 filed sometime next year.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/jzitting/apache-tika-issues-over-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Talking about the repository</title>
		<link>http://blogs.adobe.com/jzitting/talking-about-the-repository/</link>
		<comments>http://blogs.adobe.com/jzitting/talking-about-the-repository/#comments</comments>
		<pubDate>Mon, 19 Sep 2011 12:03:02 +0000</pubDate>
		<dc:creator>Jukka Zitting</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/jzitting/?p=25</guid>
		<description><![CDATA[Last week I was busy presenting Apache Jackrabbit and our commercial work on top of it. It started in Tuesday evening when I presented the Apache Jackrabbit project at the Swiss Open Source Awards ceremony  in Zürich. Jackrabbit had been &#8230; <a href="http://blogs.adobe.com/jzitting/talking-about-the-repository/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Last week I was busy presenting <a title="Apache Jackrabbit" href="http://jackrabbit.apache.org/">Apache Jackrabbit</a> and <a title="CRX" href="http://www.day.com/day/en/products/crx.html">our commercial work</a> on top of it. It started in Tuesday evening when I presented the Apache Jackrabbit project at the <a title="CH Open Source Awards" href="http://www.ossawards.ch/">Swiss Open Source Awards</a> ceremony  in Zürich.</p>
<p>Jackrabbit had been <a href="http://www.ossawards.ch/bewerber/jackrabbit/">nominated</a> for the award in the community category (other categories were business case and youth). Even though the award went to<a title="Kolab Groupware" href="http://www.ossawards.ch/bewerber/kolab-groupware"> another project</a>, the <a href="http://www.ossawards.ch/preis-verleihung/">award ceremony</a> and the included <a href="http://webtuesday.ch/">Webtuesday</a> presentation on <a href="http://www.mongodb.org/">MongoDB</a> was pretty nice. I had three minutes to present the Apache Jackrabbit project to the audience, so I put together the following short graphical overview to support the presentation.</p>
<div id="__ss_9319052" style="width: 425px; margin-left: auto; margin-right: auto;"><strong style="display: block; margin: 12px 0 4px;"><a title="Apache Jackrabbit @ Swiss Open Source Awards 2011" href="http://www.slideshare.net/jukka/apache-jackrabbit-swiss-open-source-awards-2011" target="_blank">Apache Jackrabbit @ Swiss Open Source Awards 2011</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9319052" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></div>
<p>Next in my schedule was the <a title=".adaptTo(Berlin)" href="http://adaptto.mixxt.de/">.adaptTo(Berlin) meetup</a> on Thursday and Friday. The technical meetup was organized by <a href="http://www.pro-vision.de/">pro!vision GmbH</a> in cooperation with <a href="http://www.adobe.com/">Adobe</a> and focused on the <a href="http://sling.apache.org/">Apache Sling project</a> and related technologies, most notably our CQ5 (now WEM) product built on top of it. The meetup was well organized (thanks, pro!vision!) and I really liked the no-nonsense tone of the event, with plenty of in-depth presentations by people who really knew their stuff. See <a href="http://www.flickr.com/photos/gabrielwalt/sets/72157627675031546/">Gabriel&#8217;s photos</a> for a glimpse of the action.</p>
<p>I contributed with two talks about the JCR content repository. The first was about repository performance, a topic that&#8217;s not too well covered in the available documentation. I tried to pack quite a bit of information to my presentation that&#8217;s shown below.</p>
<div id="__ss_9283041" style="width: 425px; margin-left: auto; margin-right: auto;"><strong style="display: block; margin: 12px 0 4px;"><a title="Repository performance tuning" href="http://www.slideshare.net/jukka/repository-performance-tuning" target="_blank">Repository performance tuning</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9283041" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></div>
<p>My second presentation was a bit higher level talk about the changes we&#8217;ve been making to the deployment and management architecture of the repository. The core repository still remains the same, but it can now be deployed as an OSGi bundle and managed through JMX, as explained in the presentation below.</p>
<div id="__ss_9283042" style="width: 425px; margin-left: auto; margin-right: auto;"><strong style="display: block; margin: 12px 0 4px;"><a title="OSGifying the repository" href="http://www.slideshare.net/jukka/osgifying-the-repository" target="_blank">OSGifying the repository</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/9283042" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></div>
<p>&nbsp;</p>
<p>For more good stuff, see also all <a href="http://www.pro-vision.de/adaptto">the other presentations</a> from the .adaptTo(Berlin) meetup.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/jzitting/talking-about-the-repository/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taking control of com.adobe on Maven Central</title>
		<link>http://blogs.adobe.com/jzitting/taking-control-of-com-adobe-on-maven-central/</link>
		<comments>http://blogs.adobe.com/jzitting/taking-control-of-com-adobe-on-maven-central/#comments</comments>
		<pubDate>Thu, 19 May 2011 13:25:31 +0000</pubDate>
		<dc:creator>Jukka Zitting</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[release]]></category>
		<category><![CDATA[repository]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/jzitting/?p=22</guid>
		<description><![CDATA[The com.adobe space on Maven Central has so far been used by various third parties (including myself from before joining Adobe) to make Adobe releases available to Maven clients. We want to have better control over that space and to &#8230; <a href="http://blogs.adobe.com/jzitting/taking-control-of-com-adobe-on-maven-central/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The <a href="http://search.maven.org/#search%7Cga%7C1%7Ccom.adobe">com.adobe space</a> on <a href="http://search.maven.org/">Maven Central</a> has so far been used by various third parties (<a href="http://jira.codehaus.org/browse/MAVENUPLOAD-2485">including myself</a> from before joining Adobe) to make Adobe releases available to Maven clients.</p>
<p>We want to have better control over that space and to make it easier for Adobe projects to publish their releases on Maven Central, which is why I&#8217;ve <a href="https://issues.sonatype.org/browse/OSSRH-1734">requested</a> a repository that we can use for this. We still need to figure out the internal processes by which new releases can be posted there, but at least the technical bits are already being taken care of.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/jzitting/taking-control-of-com-adobe-on-maven-central/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Checksum: an interface for monitoring streams in Java</title>
		<link>http://blogs.adobe.com/jzitting/checksum-an-interface-for-monitoring-streams-in-java/</link>
		<comments>http://blogs.adobe.com/jzitting/checksum-an-interface-for-monitoring-streams-in-java/#comments</comments>
		<pubDate>Tue, 18 Jan 2011 14:53:09 +0000</pubDate>
		<dc:creator>Jukka Zitting</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blogs.adobe.com/jzitting/?p=14</guid>
		<description><![CDATA[Consider a case where you want to monitor the data passing through a stream. Typically you&#8217;d subclass the FilterInputStream or FilterOutputStream class for that, but sometimes it would be more convenient to implement an interface instead. The CheckedInputStream and CheckedOutputStream &#8230; <a href="http://blogs.adobe.com/jzitting/checksum-an-interface-for-monitoring-streams-in-java/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Consider a case where you want to monitor the data passing through a stream. Typically you&#8217;d subclass the <a title="java.io.FilterInputStream" href="http://download.oracle.com/javase/1.5.0/docs/api/java/io/FilterInputStream.html">FilterInputStream</a> or <a title="java.io.FilterOutputStream" href="http://download.oracle.com/javase/1.5.0/docs/api/java/io/FilterOutputStream.html">FilterOutputStream</a> class for that, but sometimes it would be more convenient to implement an interface instead.</p>
<p>The <a title="java.util.zip.CheckedInputStream" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/CheckedInputStream.html">CheckedInputStream</a> and <a title="java.util.zip.CheckedOutputStream" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/CheckedOutputStream.html">CheckedOutputStream</a> utility classes in the <a href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/package-summary.html">java.util.zip</a> package can be used for this. They act as stream decorators that send all passing bytes to a given <a title="java.util.zip.Checksum" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/Checksum.html">Checksum</a> instance. The Checksum interface is primarily designed for calculating and accessing checksums like is done in the <a title="java.util.zip.CRC32" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/CRC32.html">CRC32</a> and <a title="java.util.zip.Adler32" href="http://download.oracle.com/javase/1.5.0/docs/api/java/util/zip/Adler32.html">Adler32</a> implementations, but you could just as well use the interface for other kinds of stream tracking.</p>
<p>I came up with this trick when looking for a way to implement a minimal watchdog timer that can monitor activity in both input and output streams. The code was for a special bootstrap class loader where I needed to minimize the number of separate implementation classes, which is why the Checksum interface and the existing stream decorator classes came in so handy!</p>
]]></content:encoded>
			<wfw:commentRss>http://blogs.adobe.com/jzitting/checksum-an-interface-for-monitoring-streams-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
