<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

<channel>
	<title>Planet Hippo</title>
	<link>http://planet.hippocms.org/</link>
	<language>en</language>
	<description>Planet Hippo - http://planet.hippocms.org/</description>

<item>
	<title>Niels van Kampenhout (Hippo): Creating a new document through the Hippo Repository Workflow API</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-1392800822193897306</guid>
	<link>http://dev.nielsvk.com/2009/06/creating-new-document-through-hippo.html</link>
	<description>It's already a couple of months ago that I wrote about &lt;a href=&quot;http://dev.nielsvk.com/2009/02/using-hippo-repository-workflow-api.html&quot;&gt;using the Hippo Repository Workflow API&lt;/a&gt;. Back then, I explained how to modify an existing document, and request publication. Ever since that blog post I have been getting the same question over and over again: how to create a new document through the repository API?&lt;br /&gt;&lt;br /&gt;If you read the previous blog post, and looked at the worklfow API, it might not be directly obvious how to create a new document through the workflow. Think about how a document is created though: it is always created as a child node of an existing node: the parent folder. Creating a new document is actually part of the Folder Workflow!&lt;br /&gt;&lt;br /&gt;Knowing this, it all becomes very easy. Let's step through the code:&lt;br /&gt;&lt;br /&gt;Let's hardcode some values for simplicity's sake:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;String folderPath = &quot;/content/documents/news&quot;;&lt;br /&gt;String newDocumentName = &quot;Hippo CMS 7.1 released!&quot;;&lt;br /&gt;String newDocumentType = &quot;defaultcontent:news&quot;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We will be creating a new document inside the folder &lt;code&gt;/content/documents/news&lt;/code&gt;. This is actually a node of type &lt;code&gt;hippostd:folder&lt;/code&gt;, which means a FolderWorkflow applies to this node. We will be creating a new document of type &quot;defaultcontent:news&quot;, as provided with the Hippo CMS Quickstart WAR. We will call the new document &quot;Hippo CMS 7.1 released!&quot;.&lt;br /&gt;&lt;br /&gt;Next, we get the folder node from the repository session:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;// get the folder node&lt;br /&gt;HippoNode folderNode = (HippoNode) session.getItem(folderPath);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We also need the workflow manager:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;// get the workflow manager&lt;br /&gt;HippoWorkspace workspace = (HippoWorkspace) folderNode.getSession().getWorkspace();&lt;br /&gt;WorkflowManager workflowMgr = workspace.getWorkflowManager();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Using the workflow manager, get the folder node's workflow:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;// get the folder node's workflow&lt;br /&gt;Workflow workflow = workflowMgr.getWorkflow(&quot;internal&quot;, folderNode);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Check if the workflow is a folder workflow, and cast it to a FolderWorkflow object:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;if (workflow instanceof FolderWorkflow) {&lt;br /&gt;    FolderWorkflow fw = (FolderWorkflow) workflow;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now that we have the folder workflow, we can simply call the &lt;code&gt;add&lt;/code&gt; method. It takes three String parameters: the category (&quot;new-document&quot;), the node type, and the node name:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;// create the new document&lt;br /&gt;fw.add(&quot;new-document&quot;, newDocumentType, newDocumentName);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That's it! Run the program, and check your CMS. There should be a new document &quot;Hippo CMS 7.1 Released!&quot; visible under the &quot;news&quot; folder. You can edit and publish this document just like any other. To modify the document through the API, see my &lt;a href=&quot;http://dev.nielsvk.com/2009/02/using-hippo-repository-workflow-api.html&quot;&gt;previous post on this subject&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For your convenience, here is the complete class:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;package org.example;&lt;br /&gt;&lt;br /&gt;import java.rmi.RemoteException;&lt;br /&gt;&lt;br /&gt;import javax.jcr.RepositoryException;&lt;br /&gt;import javax.jcr.Session;&lt;br /&gt;&lt;br /&gt;import org.hippoecm.repository.HippoRepository;&lt;br /&gt;import org.hippoecm.repository.HippoRepositoryFactory;&lt;br /&gt;import org.hippoecm.repository.api.HippoNode;&lt;br /&gt;import org.hippoecm.repository.api.HippoWorkspace;&lt;br /&gt;import org.hippoecm.repository.api.Workflow;&lt;br /&gt;import org.hippoecm.repository.api.WorkflowException;&lt;br /&gt;import org.hippoecm.repository.api.WorkflowManager;&lt;br /&gt;import org.hippoecm.repository.standardworkflow.FolderWorkflow;&lt;br /&gt;&lt;br /&gt;public class CreateDocument {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;        Session session;&lt;br /&gt;        HippoRepository repository;&lt;br /&gt;        try {&lt;br /&gt;            repository = HippoRepositoryFactory.getHippoRepository(&quot;rmi://localhost:1099/hipporepository&quot;);&lt;br /&gt;            session = repository.login(&quot;author&quot;, &quot;author&quot;.toCharArray());&lt;br /&gt;            &lt;br /&gt;            String folderPath = &quot;/content/documents/news&quot;;&lt;br /&gt;            String newDocumentName = &quot;Hippo CMS 7.1 released!&quot;;&lt;br /&gt;            String newDocumentType = &quot;defaultcontent:news&quot;;&lt;br /&gt;&lt;br /&gt;            // get the folder node&lt;br /&gt;            HippoNode folderNode = (HippoNode) session.getItem(folderPath);&lt;br /&gt;            &lt;br /&gt;            // get the workflow manager&lt;br /&gt;            HippoWorkspace workspace = (HippoWorkspace) folderNode.getSession().getWorkspace();&lt;br /&gt;            WorkflowManager workflowMgr = workspace.getWorkflowManager();&lt;br /&gt;            &lt;br /&gt;            // get the folder node's workflow&lt;br /&gt;            Workflow workflow = workflowMgr.getWorkflow(&quot;internal&quot;, folderNode);&lt;br /&gt;            &lt;br /&gt;            if (workflow instanceof FolderWorkflow) {&lt;br /&gt;                FolderWorkflow fw = (FolderWorkflow) workflow;&lt;br /&gt;                &lt;br /&gt;                // create the new document&lt;br /&gt;                fw.add(&quot;new-document&quot;, newDocumentType, newDocumentName);&lt;br /&gt;                &lt;br /&gt;                System.out.println(&quot;New document '&quot; + newDocumentName + &quot;' of type '&quot; + newDocumentType + &quot;' created&quot;);&lt;br /&gt;            }&lt;br /&gt;            else {&lt;br /&gt;                System.out.println(&quot;Workflow is not an instance of FolderWorkflow&quot;);&lt;br /&gt;                return;&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;        } catch (RepositoryException e) {&lt;br /&gt;            System.out.println(e.getMessage());&lt;br /&gt;        } catch (RemoteException e) {&lt;br /&gt;            System.out.println(e.getMessage());&lt;br /&gt;        } catch (WorkflowException e) {&lt;br /&gt;            System.out.println(e.getMessage());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-1392800822193897306?l=dev.nielsvk.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 23 Jun 2009 21:33:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Tjeerd D. Brenninkmeijer (Hippo): Walking the open source road</title>
	<guid>http://blogs.hippo.nl/tjeerd/2009/06/walking_the_open_source_road.html</guid>
	<link>http://blogs.hippo.nl/tjeerd/2009/06/walking_the_open_source_road.html</link>
	<description>At a recent conference, I was approached by an executive from a software company who wanted advice on how they could open their code. I’ve been in open source for many years; early open source developments simply evolved organically as collaborative projects, and there was no ‘right or wrong’</description>
	<pubDate>Tue, 23 Jun 2009 11:46:37 +0000</pubDate>
</item>
<item>
	<title>Vijay Kiran (Hippo): Customizing Hippo CMS – Getting Started</title>
	<guid>http://www.vijaykiran.com/?p=1213</guid>
	<link>http://www.vijaykiran.com/customizing-hippo-cms-getting-started/</link>
	<description>&lt;p&gt;&lt;em&gt;This post is part of a series which will be focusing mainly on Hippo CMS&amp;#8217;s extensibility. These posts are more targeted towards the developers who want to customize and enhance the core CMS functionality. &lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hippo CMS is part of the &lt;a href=&quot;http://www.onehippo.com&quot; target=&quot;_blank&quot;&gt;Hippo&amp;#8217;s&lt;/a&gt; Open Source Enterprise Content Management System. It provides a browser based user interface for managing the content in the Hippo Repository. &lt;a href=&quot;http://www.onehippo.org/cms7/&quot; target=&quot;_blank&quot;&gt;Hippo CMS&lt;/a&gt; is fully customizable and developer friendly CMS that provides various ways to extend its functionality.&lt;/p&gt;
&lt;p&gt;Hippo CMS application is built using &lt;a href=&quot;http://wicket.apache.org&quot; target=&quot;_blank&quot;&gt;Apache Wicket&lt;/a&gt;, one the best frameworks available today for building web applications using Java. Wicket is known for its simplicity, and its component-oriented programming, thus providing solid base for the Hippo CMS.&lt;/p&gt;
&lt;p&gt;Hippo CMS has pluggable architecture which boasts of first class plug-in mechanism. Depending on your needs, you can create complex document types, extend and enhance the user interface and even create a combined add-on that can change the Core CMS and even replace. All you need to know to build the GUI add-ons is Java and Wicket.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ll try to explain each of these extensibility in detailed examples in this series of blog posts. So let us get started.&lt;/p&gt;
&lt;p&gt;Yesterday we have &lt;a href=&quot;http://lists.onehippo.org/pipermail/hippo-cms7-user/2009-June/001245.html&quot; target=&quot;_blank&quot;&gt;announced&lt;/a&gt; a new version of &lt;a href=&quot;http://www.onehippo.org/cms7/&quot; target=&quot;_blank&quot;&gt;Hippo CMS&lt;/a&gt; (version 7.1) and &lt;a href=&quot;http://www.onehippo.org/site-toolkit/home&quot; target=&quot;_blank&quot;&gt;Hippo Site Toolkit 2&lt;/a&gt;(Version 2.03.09).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Getting and Building Hippo CMS&lt;/strong&gt;&lt;br /&gt;
&lt;em&gt;I&amp;#8217;m assuming you are using a Unixy Operating system (Linux/Mac OS X). If you use windows replace the commands appropriately.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Before starting to checkout the source and building please make sure you have the following installed on your computer.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://subversion.tigris.org/&quot; target=&quot;_blank&quot;&gt;Subversion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://maven.apache.org&quot; target=&quot;_blank&quot;&gt;Apache Maven 2.1.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://java.sun.com&quot; target=&quot;_blank&quot;&gt;JDK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Open a command line and check out the code for Hippo ECM using following command. Please note that if you are using an graphical client such as Tortose SVN, then you can checkout using the appropriate menu option.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot;&gt;&lt;span&gt;svn&lt;/span&gt; &lt;span&gt;co&lt;/span&gt; http:&lt;span&gt;//&lt;/span&gt;svn.onehippo.org&lt;span&gt;/&lt;/span&gt;repos&lt;span&gt;/&lt;/span&gt;hippo&lt;span&gt;/&lt;/span&gt;hippo-ecm&lt;span&gt;/&lt;/span&gt;tags&lt;span&gt;/&lt;/span&gt;Tag-HREPTWO-v2_06_06 cms-&lt;span&gt;7.1&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now change to the cms-7.1 directory and build the Hippo ECM using maven.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot;&gt;&lt;span&gt;cd&lt;/span&gt; cms-&lt;span&gt;7.1&lt;/span&gt;
mvn clean &lt;span&gt;install&lt;/span&gt; &lt;span&gt;&amp;#91;&lt;/span&gt;-DskipTests&lt;span&gt;&amp;#93;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you are getting out of heap space error, set the MAVEN_OPTS using the following command:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot;&gt;&lt;span&gt;export&lt;/span&gt; &lt;span&gt;MAVEN_OPTS&lt;/span&gt;=&lt;span&gt;&amp;quot;-Xms256m -Xmx700m -XX:MaxPermSize=1024m&amp;quot;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you are building for the first time, please note that it may take some time since maven needs to download all the dependencies. Once you are done with building Hippo ECM and you can run the provided Quick-start WAR file to get a feel of the user interface and the CMS application.&lt;/p&gt;
&lt;p&gt;Change to the quickstart/war directory and run the hippo-cms web application using embedded jetty.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot;&gt;&lt;span&gt;cd&lt;/span&gt; quickstart&lt;span&gt;/&lt;/span&gt;war
mvn jetty:run-war&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After jetty has been started, goto http://localhost:8080/cms to check the version of the CMS that you&amp;#8217;ve just built. You can login using default username/password combination of admin/admin.&lt;/p&gt;
&lt;div id=&quot;attachment_1226&quot; class=&quot;wp-caption aligncenter&quot;&gt;&lt;a href=&quot;http://www.vijaykiran.com/wp-content/uploads/2009/06/HippoCMS001.jpg&quot;&gt;&lt;img class=&quot;size-large wp-image-1226  &quot; title=&quot;HippoCMS001&quot; src=&quot;http://www.vijaykiran.com/wp-content/uploads/2009/06/HippoCMS001-1024x732.jpg&quot; alt=&quot;HippoCMS001&quot; width=&quot;465&quot; height=&quot;332&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;Hippo CMS Login Screen&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;
&lt;p&gt;Note that you can even deploy the generated war file in Tomcat or an Application Server. Check the &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/quickstart_in_existing_container.html&quot; target=&quot;_blank&quot;&gt;documentation&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;This concludes the first part of Hippo CMS Customization Part 1- Getting Started . In the next post of this series we will see how to create a simple backend templates (a.k.a Document Types) using Document Type Editor provided within Hippo CMS.&lt;/p&gt;</description>
	<pubDate>Fri, 19 Jun 2009 13:59:41 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Mathijs Brand (Hippo): Limited choices</title>
	<guid>http://blogs.hippo.nl/mathijs/2009/06/limited_choices.html</guid>
	<link>http://blogs.hippo.nl/mathijs/2009/06/limited_choices.html</link>
	<description>&lt;img src=&quot;http://farm4.static.flickr.com/3241/3115404982_cbb22e231a.jpg?v=0&quot; alt=&quot;Coffee choices...&quot; align=&quot;right&quot; width=&quot;250px&quot; /&gt;
I don't like to make choices. For me the best choice in life is - no choice at all. For example: I like to drink coffee. Any kind</description>
	<pubDate>Mon, 15 Jun 2009 15:55:36 +0000</pubDate>
</item>
<item>
	<title>Jeroen Reijn (Hippo): JCR: Sorting on child node properties</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-8494252870185399323</guid>
	<link>http://blog.jeroenreijn.com/2009/06/jcr-sorting-on-child-node-properties.html</link>
	<description>A JCR repository, like &lt;a href=&quot;http://jackrabbit.apache.org&quot;&gt;Apache Jackrabbit&lt;/a&gt; (basis for &lt;a href=&quot;http://www.onehippo.org&quot;&gt;Hippo CMS 7&lt;/a&gt;'s content repository), mainly consists of nodes and properties. &lt;br /&gt;As described in the &lt;a href=&quot;http://jcp.org/aboutJava/communityprocess/final/jsr170/index.html&quot;&gt;JCR specification&lt;/a&gt;, a Java Content Repository should support 2 different query syntaxes: XPath and SQL. Once you get the hang of the syntax, performing a search on a JCR repository is quite easy, but today I came into a situation where I was not able perform the query I wanted. In this post I'll try to describe what my problem was and how the same result can still be achieved. &lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The content model&lt;/h3&gt;&lt;br /&gt;Let's first start with my content model. The actual node definition for my project looks something like the below:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;[myproject:metadata]&lt;br /&gt;- myproject:creator (string)&lt;br /&gt;- myproject:language (string)&lt;br /&gt;- myproject:publicationDate (date)&lt;br /&gt;- myproject:availableUntil (date)&lt;br /&gt;- myproject:lastModified (date)&lt;br /&gt;- myproject:keywords (string)&lt;br /&gt;- myproject:contributor (string)&lt;br /&gt;&lt;br /&gt;[myproject:news] &gt; hippostd:publishable, hippostd:publishableSummary, hippo:document&lt;br /&gt;- myproject:title (string)&lt;br /&gt;+ myproject:introduction (hippostd:html)&lt;br /&gt;+ myproject:body (hippostd:html)&lt;br /&gt;+ myproject:metadata (myproject:metadata)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I came into a situation where I wanted to search for nodes of type '&lt;span&gt;myproject:news&lt;/span&gt;', but sorted on the 'myproject:publicationDate' property of the '&lt;span&gt;myproject:metadata&lt;/span&gt;' subnode. Writing an XPath for such a query is quite easy if you're familiar with the XPath syntax.&lt;br /&gt;&lt;br /&gt;Let's start out with a very simple search and just search for nodes of the type '&lt;span&gt;myproject:news&lt;/span&gt;' , which in XPath looks like:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//element( *, myproject:news)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now if we would want to order these node types based on for instance the myproject:title property the same XPath query looks like:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//element( *, myproject:news) order by @myproject:title descending&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Now if we would want to sort on the '&lt;span&gt;myproject:publicationDate&lt;/span&gt;' property of the myproject:metadata subnode, I would expect the same XPath to be:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;//element( *, myproject:news) order by myproject:metadata/@myproject:publicationDate descending&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately this query did not seem to actually sort the result on the publicatenDate property as I would have expected. I was searching for typos first, but it appeared that the syntax of my query was ok, but it appeared that support for child axis in order by clauses was not yet supported by Jackrabbit itself.&lt;br /&gt;&lt;br /&gt;Then I found &lt;a href=&quot;https://issues.apache.org/jira/browse/JCR-800&quot;&gt;this&lt;/a&gt; JIRA issue[1] in the Jackrabbit bugtracker describing this problem and there appears to be a patch available. I'm still wondering how much of a performance impact this might have for large repositories, where you might want to sort on a property of a child node 'n'-levels deep underneath the actual node.&lt;br /&gt;&lt;br /&gt;If you want to sort on properties of a specific nodetype, you will have to add the sortable properties to the actual nodetype, which you are searching for and can't put them on a subnode. &lt;br /&gt;It seems that the patch, which should fix this problem, has already been comitted to the Jackrabbit trunk and should be available from Jackrabbit 1.6.0 as marked in the JackRabbit JIRA.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-8494252870185399323?l=blog.jeroenreijn.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 13 Jun 2009 17:01:11 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Woonsan Ko (Hippo): Spring Web MVC framework support in HST-2</title>
	<guid>http://blogs.hippo.nl/woonsan/2009/06/spring_web_mvc_framework_suppo_1.html</guid>
	<link>http://blogs.hippo.nl/woonsan/2009/06/spring_web_mvc_framework_suppo_1.html</link>
	<description>&lt;h1&gt;Spring Web MVC framework support in HST-2&lt;/h1&gt;
&lt;br /&gt;
HST-2 has provided a basic support to enable developers to utilize
Spring Framework IoC container for HST components. [1]&lt;br /&gt;
Now, HST-2 provides even more. It supports Spring Web MVC Framework
based applications under HST-2 environment! Using</description>
	<pubDate>Fri, 05 Jun 2009 16:28:37 +0000</pubDate>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): Hippo Site Toolkit Query interface and pagination</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-4064821216161876139</guid>
	<link>http://blog.jasha.eu/2009/06/hippo-site-toolkit-query-interface-and.html</link>
	<description>&lt;p&gt;Today an interesting question came from a developer of one of our implementation partners. He wanted to list items from our JCR repository and use pagination. In this post I tried to make a summary out of the &lt;a href=&quot;http://n2.nabble.com/Query-interface-and-pagination-tt3024511.html&quot;&gt;conversation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The query was:&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;
HstQuery query = getQueryManager().createQuery(requestContext, scope, filterBean);
Filter filter = query.createFilter();
filter.addContains(&quot;.&quot;, &quot;my keywords&quot;);
query.setFilter(filter);
HstQuery queryResult = query.execute();
&lt;/pre&gt;

&lt;p&gt;The developer tried to get a paged result and the total number of items with:&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;
query.setOffset(0);
query.setLimit(10);

HippoBeanIterator hits = queryResult.getHippoBeans();        
hits.getSize();
&lt;/pre&gt;

&lt;p&gt;The result contained indeed 10 items but hits.getSize(); also returned 10. What's going wrong? Ard Schrijvers explained:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;
If you use setLimit(3), you will get at most 3 hits, but never more. getSize() from the queryResult returns at most 3. Even if the search criteria matched hundreds of documents. If you use offset(10) and no limit, getSize() returns just 10 hits less then without the offset.
&lt;/p&gt;
&lt;p&gt;
This limit is there to be used for performance, and suits for example very well &quot;show last 3 agenda items on homepage&quot;.
&lt;/p&gt;
&lt;p&gt;
If you need paging and only want 10 results, do not use setLimit(int limit).
&lt;/p&gt;
&lt;p&gt;What you do use, is just the query without setLimit(). Then you'll get back a queryResult, from which you get a HippoBeanIterator. This is a normal Iterator, with some extensions. A very important one is the method skip(int skipNum).
&lt;/p&gt;
&lt;p&gt;From the HippoBeanIterator, you can simply iterate the beans you need. Make sure you use skip(int skipNum) to jump to the correct place. If the current page is
11 and pagesize is 20, set skipNum to 220.&lt;/p&gt;
&lt;p&gt;
Then fill your List in a for loop from skipNum - skipNum + pageSize.
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What about performance?&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The skip is propagated to the JCR NodeIterator. If you want to display item 100-110, and you use skip(100), still only 10 Beans will be created. JCR nodes for Beans 0-99 are not fetched.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;What if you need the total number of hits?&lt;p&gt;
&lt;blockquote&gt;&lt;p&gt;Use getSize(). The getSize() on the the HstQueryResultImpl or on the HippoBeanIteratorImpl does not actually populate the entire iterator with HippoBeans. It is a call through the JCR NodeIterator, which in JackRabbit is some lazy loading iterator, and, where the getSize is propagated to the executed query, without fetching actual nodes.&lt;/p&gt;
&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-4064821216161876139?l=blog.jasha.eu&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 04 Jun 2009 18:01:43 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): HST Components at Hippo Forge</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-7912832826758318126</guid>
	<link>http://dev.nielsvk.com/2009/05/hst-components-at-hippo-forge.html</link>
	<description>&lt;a href=&quot;http://www.flickr.com/photos/oskay/265899811/&quot;&gt;&lt;img src=&quot;http://farm1.static.flickr.com/117/265899811_6eb93ed68d_m.jpg&quot; alt=&quot;Inside-out Lego brick by oskay&quot; align=&quot;right&quot; /&gt;&lt;/a&gt;In the past couple of days I slapped together two simple components for use with the Hippo Site Toolkit 2: &lt;a href=&quot;http://rss.forge.onehippo.org/&quot;&gt;RSS Feed Creator&lt;/a&gt; and &lt;a href=&quot;http://listbuilder.forge.onehippo.org/&quot;&gt;List Builder&lt;/a&gt;. At this moment, their names are more fancy than their actual functionalities ;-) but the idea is to provide some basic building blocks that people can take and extend. Both components are hosted at &lt;a href=&quot;http://forge.onehippo.org/&quot;&gt;Hippo Forge&lt;/a&gt;, so the source code is available and you can do with them whatever you want. Go ahead and take them for a test drive. If you think you can improve them (not that hard), feel free to contribute your work. I am happy to apply your patches. I might even consider giving you commit rights! ;-)&lt;br /&gt;&lt;br /&gt;The Forge is actually starting to become a well stocked library of CMS and HST components. Check out the &lt;a href=&quot;http://relateddocs.forge.onehippo.org/&quot;&gt;Related Items Plugin&lt;/a&gt;; It helps you creating a list of documents related to the one you are editing, by making suggestions. Just one example of reusable functionality that you can add to your CMS project. Doesn't match your exact requirements? Adapt it, it's open source! Made a component for your project that is useful for others? Add it to the Forge!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-7912832826758318126?l=dev.nielsvk.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 21 May 2009 18:01:42 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): I don't want to register before downloading</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-7926038348793250183</guid>
	<link>http://blog.jasha.eu/2009/05/i-dont-want-to-register-before.html</link>
	<description>&lt;p&gt;Okay I just wanted to try the &quot;community edition&quot; of some software. So I clicked on the big download button and then... I had to login. Because I don't have an account yet I had to register first. So I filled in all required field like my email address and a free to choose password without any help message about it's strength and then I got this error message:&lt;/p&gt;

&lt;blockquote&gt;Password not strong enough. Please use at least 3 of the following prerequisites:lowercase (a-z), uppercase (A-Z), numbers (0-9), and special characters (!^%#$@*.,)&lt;/blockquote&gt;

&lt;p&gt;Come on, I just want to try some software. Just let me download it without creating an account I will probably never use again. When I want to post on your support forum that's the right moment to create an account. I wonder if these companies have ever looked into their website statistics to see at which point people quit.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-7926038348793250183?l=blog.jasha.eu&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sat, 16 May 2009 12:01:19 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Vijay Kiran (Hippo): Debugging maven-jetty web application in NetBeans</title>
	<guid>http://www.vijaykiran.com/?p=1194</guid>
	<link>http://www.vijaykiran.com/debugging-maven-jetty-web-application-in-netbeans/</link>
	<description>&lt;p&gt;Setup Jetty to run with Debugging enabled on port 8000&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;bash&quot;&gt;&lt;span&gt;export&lt;/span&gt; &lt;span&gt;MAVEN_OPTS&lt;/span&gt;=&lt;span&gt;&amp;quot;</description>
	<pubDate>Tue, 12 May 2009 14:56:00 +0000</pubDate>
	<dc:creator>Vijay Kiran</dc:creator>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): Hippo developer training</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-9074074974667498397</guid>
	<link>http://blog.jasha.eu/2009/04/hippo-developer-training.html</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.onehippo.com&quot; target=&quot;_blank&quot;&gt;Hippo&lt;/a&gt; let me follow the three day developer training for CMS 7 and Hippo Site Toolkit 2 (HST2) by &lt;a href=&quot;http://blog.jeroenreijn.com/&quot; target=&quot;_blank&quot;&gt;Jeroen Reijn&lt;/a&gt;. I don't live inside a cocoon so I knew already which new products had been developed. Until now I hadn't done any implementation yet with Hippo CMS 7 and the HST2 because I was too occupied with Hippo CMS 6 projects. Since I'm also a Hippo trainer it was a good chance to get to know our new training programmes.&lt;/p&gt;

&lt;h3&gt;Day 1: introduction&lt;/h3&gt;
&lt;p&gt;After we received the handouts of the training we introduced ourselves. It was a pretty mixed group with developers from partner implementation companies, an independent consultant, developers from a customer and me.
&lt;a href=&quot;http://www.onehippo.org/about/architecture.html&quot; target=&quot;_blank&quot; title=&quot;Hippo architecture&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3398/3474894727_defcc557c4_o.jpg&quot; width=&quot;250&quot; height=&quot;142&quot; alt=&quot;Hippo Architecture&quot; /&gt;&lt;/a&gt; Jeroen explained the Hippo architecture which is basically still the same as with version 6 but based on different technologies. The WebDAV repository has been replaced with our JCR Repository (based on &lt;a href=&quot;http://jackrabbit.apache.org/&quot; target=&quot;_blank&quot;&gt;Apache Jackrabbit&lt;/a&gt;) which also uses &lt;a href=&quot;http://lucene.apache.org/&quot; target=&quot;_blank&quot;&gt;Apache Lucene&lt;/a&gt; for fast indexing &amp; searching. &lt;a href=&quot;http://www.onehippo.org/cms7/&quot; target=&quot;_blank&quot;&gt;Hippo CMS 7&lt;/a&gt; is still an application that runs separate from the repository and has been written in &lt;a href=&quot;http://wicket.apache.org/&quot; target=&quot;_blank&quot;&gt;Apache Wicket&lt;/a&gt;. For front end applications you're free to choose a technology but Java is recommended because of the J in JCR ;)&lt;/p&gt;
&lt;p&gt;Jeroen showed us the CMS and the Console to show what's happening inside the repository. The trainees all got a laptop from Hippo with a VirtualBox image for the training to &quot;play&quot; with the CMS and the console. No need to bring your own laptop for the first two days!&lt;/p&gt;

&lt;h3&gt;Day 2: changing templates and HST2 introduction&lt;/h3&gt;
&lt;p&gt;After some explanation we started to create our own document type. We used &lt;a href=&quot;http://svn.onehippo.org/repos/hippo/hippo-ecm/tags/Tag-HREPTWO-v2_03_00/&quot; target=&quot;_blank&quot;&gt;version 2.03.00&lt;/a&gt; (later versions have some issues with the graphical template editor which are being solved soon). With just a few mouse clicks I had a &quot;blogpost&quot; template with a date, title, WYSIWYG field and a checkbox for &quot;allowing&quot; comments. Because this template isn't very difficult, it's nice to create it by the GUI editor instead of creating XML configuration by hand (which is still possible if you like to).&lt;/p&gt;

&lt;p&gt;After lunch Jeroen started explaining the Hippo Site Toolkit &lt;a href=&quot;http://svn.onehippo.org/repos/hippo/ecm/site-toolkit/tags/Release-HSTTWO-v2_03_02/&quot; target=&quot;_blank&quot;&gt;version 2.03.02&lt;/a&gt;. The HST is not a framework but a toolkit to create your own website using Hippo CMS and Hippo Repository. At this moment there's an HST for JSP sites but other (Java) technologies may follow in the coming years. On the VirtualBox image there is a sample site with a navigation structure, a news listing and a view for detail pages. All configuration for the menu structure, sitemap (mapping between URLs and repository paths), pages and templates is done in the repository. Now you have to do it by hand but in the near future there will be a configuration editor in the CMS. That would make it easy for the webmaster to change the URL structure or the way pages look. &lt;/p&gt;
&lt;p&gt;The URL mapping is easy to understand if you know how &lt;a href=&quot;http://cocoon.apache.org/2.0/userdocs/matchers/matchers.html&quot; target=&quot;_blank&quot;&gt;matching&lt;/a&gt; works in Apache Cocoon. _default_ is the equivalent of * in a Cocoon sitemap and _any_ is equal to ** in the WildCardMatcher. A navigation structure like&lt;/p&gt;
&lt;pre&gt;
News
|- _default_
  |- _default_
    |- _any_.html
&lt;/pre&gt;
&lt;p&gt;would match a URL like /News/2009/04/My_blogpost.html. The &quot;wildcards&quot; _default_ and _any_ can be added as parameters to the rendering class that can pass it to the JSP so you can display &quot;April 2009&quot; in the title of your news overview if a visitor goes to /News/2009/04. As last exercise we added a new document type for events in the CMS, created some events and added a new event listing to the existing example site.&lt;/p&gt;

&lt;h3&gt;Day 3: create your own site from the Maven archetype&lt;/h3&gt;
&lt;p&gt;For this day we were asked to bring our own laptop so we could leave with a functional website at the end of the day and have all the necessary software installed to create another. Jeroen explained about &lt;a href=&quot;http://maven.apache.org/&quot; target=&quot;_blank&quot;&gt;Maven&lt;/a&gt; en let us create a project using the Maven archetype:&lt;/p&gt;
&lt;pre&gt;
$ mvn archetype:generate \
   -DarchetypeRepository=http://repository.onehippo.org/maven2 \
   -DarchetypeGroupId=org.onehippo.ecm.hst \
   -DarchetypeArtifactId=hst-archetype \
   -DarchetypeVersion=2.03.02 \
   -Dversion=1.01.00 \
   -DgroupId=org.example \
   -DartifactId=myproject
&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3475496149/&quot; title=&quot;HST2 site by JAsha J, on Flickr&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3346/3475496149_9189fd3732_m.jpg&quot; width=&quot;240&quot; height=&quot;176&quot; alt=&quot;HST2 site&quot; /&gt;&lt;/a&gt; It creates a project on the file system in three parts: the content, CMS and the site. After lunch we started to build our own website. I took the &lt;a href=&quot;http://www.urban-net.org/&quot; target=&quot;_blank&quot;&gt;Urban-net&lt;/a&gt; website as example because it has an easy layout (1 header and 3 columns: left hand navigation, dynamic content in the centre and some downloads on the right hand site).&lt;/p&gt;
&lt;p&gt;First I created two document types, one for normal text and one for &quot;research programmes&quot; (leaving away some fields compared to the original site). Then there was the time consuming part: copy-pasting enough content for a decent paging in the site. For real projects there are &lt;a href=&quot;http://svn.onehippo.org/repos/hippo/hippo-ecm/tags/Tag-HREPTWO-v2_03_00/tools/migration/&quot; target=&quot;_blank&quot;&gt;migration tools&lt;/a&gt; available to convert the XML content from the WebDAV repository to JCR nodes and properties. 
&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3479157956/&quot; title=&quot;HST2 paging by JAsha J, on Flickr&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3559/3479157956_a98789a1a0_m.jpg&quot; width=&quot;240&quot; height=&quot;177&quot; alt=&quot;HST2 paging&quot; /&gt;&lt;/a&gt; For the themes I used an ordinary repeating text field but the &lt;a href=&quot;http://forge.onehippo.org/projects/ecm-tagging/&quot; target=&quot;_blank&quot;&gt;Hippo ECM Tagging add-on&lt;/a&gt; would be more user friendly in a real life implementation.&lt;/p&gt;
&lt;p&gt;After defining the several sitemenu parts, components, pages and templates it was time to add the design and copy-paste the HTML into the JSP's. I couldn't implement everything I wanted (helped others as well and the time was limited). However in just a few hours I managed to implement a subset of the normal site. It does not contain search, no faceted navigation, the links on the right hand site are fake but it does show the basics.&lt;/p&gt;
&lt;p&gt;After the training it was time to enjoy the beautiful weather on our balcony with some drinks and chips.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-9074074974667498397?l=blog.jasha.eu&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 27 Apr 2009 06:20:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Woonsan Ko (Hippo): Spring framework support in HST-2</title>
	<guid>http://blogs.hippo.nl/woonsan/2009/04/spring_framework_support_in_hs_1.html</guid>
	<link>http://blogs.hippo.nl/woonsan/2009/04/spring_framework_support_in_hs_1.html</link>
	<description>I'd like to explain the current status to support Spring Framework-based developer community.
HST-2 (Hippo Site Toolkit - 2) now supports Spring Framework more than the earlier versions because there are a lot of developers utilizing the framework.

&lt;strong&gt;1. Introduction&lt;/strong&gt;

It is very desirable to use spring web framework if the development team is familiar with Spring and they could make better productivity with that.
HST-2 now provides a bridge &lt;code&gt;HstComponent&lt;/code&gt; to &lt;code&gt;HstComponent&lt;/code&gt; beans which are managed by spring web application context.
So, you can define your HstComponent beans in your spring context configuration and inject your existing component to them.
You can see an example in the HST-2 source already if you download the source from the trunk for now.
In the /applications/site/, 'contact-spring' menu will show the example which uses the bridge component. The actual bean is defined in &lt;code&gt;/WEB-INF/applicationContext.xml&lt;/code&gt; like the following:

&lt;code&gt;&lt;pre&gt;
  &amp;lt;!-- HST Component Beans --&amp;gt;
  &amp;lt;bean id=&quot;contactBean&quot; class=&quot;org.hippoecm.hst.components.ContactSpring&quot;&amp;gt;
    &amp;lt;property name=&quot;mailSender&quot; ref=&quot;mailSender&quot; /&amp;gt;
    &amp;lt;property name=&quot;templateMessage&quot; ref=&quot;templateMessage&quot; /&amp;gt;
  &amp;lt;/bean&amp;gt;

  &amp;lt;!-- The existing components as an example --&amp;gt;
  &amp;lt;bean id=&quot;templateMessage&quot; class=&quot;org.springframework.mail.SimpleMailMessage&quot;&amp;gt;
    &amp;lt;property name=&quot;to&quot; value=&quot;contact@mycompany.com&quot; &amp;gt;
    &amp;lt;property name=&quot;subject&quot; value=&quot;My opinion&quot; &amp;gt;
  &amp;lt;/bean&amp;gt;
  &amp;lt;bean id=&quot;mailSender&quot; class=&quot;org.springframework.mail.javamail.JavaMailSenderImpl&quot;&amp;gt;
    &amp;lt;property name=&quot;host&quot; value=&quot;mail.mycompany.com&quot;/&amp;gt;
  &amp;lt;/bean&amp;gt;
&lt;/pre&gt;&lt;/code&gt;

&lt;strong&gt;2. How it integrates with HST 2.3?&lt;/strong&gt;

HST container manages, invokes and aggregates only components based on  &lt;code&gt;HstComponent&lt;/code&gt; interface for some reasons: to support transparent page aggregation, seamless portal integration, etc.
A generic &lt;code&gt;HstComponent&lt;/code&gt; was developed to play a role as a bridge to a bean managed by spring framework.
So, the generic bridge &lt;code&gt;HstComponent&lt;/code&gt; will delegate all invocation to the actual HstComponent bean managed by spring framework.

&lt;strong&gt;3. What the benefits are? What the drawbacks are?&lt;/strong&gt;

Spring-based developers can use full cool functionalities of spring framework like Dependency Injection, out-of-box spring components to support enterprise computing like JDBC template, transaction management and enterprise messaging, AOP techniques, Web Service support, Various view technologies, etc.
&lt;code&gt;HstComponent&lt;/code&gt; can be fully integrated with these rich spring supports.

The Spring bridge &lt;code&gt;HstComponent&lt;/code&gt; invokes directly the actual bean, so there's no performance degrade and functional shortage here.

Of course, it looks a little bit different from the original spring web mvc pattern. The differences you can think of are originally from the differences of goals: HST-2 is to support transparent page aggregation and seamless portal integration, etc.
Because HST-2 container aggregates multiple components in one page, the action phase should be separated from the rendering phase of all components. This means that HST container's aggregation should imply the &lt;em&gt;PRG&lt;/em&gt; pattern internally. [1]
Therefore, in a HST component, the *controlling* logic should be separated in doAction() and in doBeforeRender(). Also, those two separate phase should have separate request life cycles.

Anyway, once you get accustomed to &lt;code&gt;HstComponent&lt;/code&gt; request l</description>
	<pubDate>Mon, 20 Apr 2009 10:04:55 +0000</pubDate>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): Coming soon to a computer near you: Hippo Site Toolkit 2!</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-3563955525382474018</guid>
	<link>http://dev.nielsvk.com/2009/04/coming-soon-to-computer-near-you-hippo.html</link>
	<description>It's almost finished! &lt;a href=&quot;http://www.onehippo.org/site-toolkit/&quot;&gt;Hippo Site Toolkit 2&lt;/a&gt; will be released really soon now. I am working on the documentation right now and I have to say I am impressed by the work of our development team.&lt;br /&gt;&lt;br /&gt;Hippo Site Toolkit 2 is a very versatile and lightweight component based framework for building websites on the &lt;a href=&quot;http://www.onehippo.org/cms7/&quot;&gt;Hippo CMS&lt;/a&gt; stack. Very much in Hippo tradition, we do not enforce you to use any particular technology or framework, but rather give you freedom of choice and the building blocks you need.&lt;br /&gt;&lt;br /&gt;Some highlights among the many features of Hippo Site Toolkit 2 are:&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Component based&lt;/span&gt;&lt;br /&gt;HST2 lets you create reusable components and assemble webpages from those components.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Transparent support for portlets&lt;/span&gt;&lt;br /&gt;HST2 components can be used out of the box as portlets in a portal environment.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Framework independent&lt;/span&gt;&lt;br /&gt;Although our primary focus is JSP, any Java web framework can make use of HST2 functionalities. A Spring MVC example is included.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Plain Java&lt;/span&gt;&lt;br /&gt;HST2 does not enforce any &quot;dominating technology&quot; that has been built on top of Java, such as Cocoon or Sling. It's all plain old Java.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;Rapid website development&lt;/span&gt;&lt;br /&gt;HST2 includes a web based configuration GUI embedded in Hippo CMS, and many reusable out of the box components.&lt;br /&gt;&lt;br /&gt;There is no official release yet, and it's still a little rough around the edges here and there (you need to use the CMS Console for some configuration), but it is already usable. If you want to live on the edge, check out the &lt;a href=&quot;http://svn.hippocms.org/repos/hippo/ecm/site-toolkit/trunk/&quot;&gt;trunk&lt;/a&gt; and give it a go (see the &lt;a href=&quot;http://svn.hippocms.org/repos/hippo/ecm/site-toolkit/trunk/README&quot;&gt;README&lt;/a&gt;). If not, stay tuned while we finish up the release and the documentation!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-3563955525382474018?l=dev.nielsvk.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 13 Apr 2009 23:01:32 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): Publishing Maven artifacts for your Hippo Forge project</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-6938902042979972255</guid>
	<link>http://dev.nielsvk.com/2009/03/publishing-maven-artifacts-for-your.html</link>
	<description>Do you have a project on &lt;a href=&quot;http://forge.onehippo.org/&quot;&gt;Hippo Forge&lt;/a&gt;? Then you might want to &lt;a href=&quot;http://maven.apache.org/plugins/maven-deploy-plugin/usage.html&quot;&gt;deploy&lt;/a&gt; artifacts in a Maven repository, so your projects can be added as a dependency to other Maven projects. Hippo Forge has no central Maven repository, but you can use your project's SVN repository to publish the artifacts. To do this, you can use &lt;a href=&quot;https://wagon-svn.dev.java.net/&quot;&gt;wagon-svn&lt;/a&gt;, a Maven Wagon provider for Subversion.&lt;br /&gt;&lt;br /&gt;The first thing you need to do is create a space in your SVN repository to deploy the artifacts in. If your project's SVN repository is at &lt;code&gt;http://forge.hippo-ecm.org/svn/myproject/&lt;/code&gt;, create a folder &lt;code&gt;maven2&lt;/code&gt; in the root of the repository, i.e. &lt;code&gt;http://forge.hippo-ecm.org/svn/myproject/maven2/&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;In your project's POM, add the wagon-svn extension to the &lt;code&gt;build&lt;/code&gt; section:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;  &amp;lt;build&amp;gt;&lt;br /&gt;    ...&lt;br /&gt;    &amp;lt;extensions&amp;gt;&lt;br /&gt;      &amp;lt;extension&amp;gt;&lt;br /&gt;        &amp;lt;groupId&amp;gt;org.jvnet.wagon-svn&amp;lt;/groupId&amp;gt;&lt;br /&gt;        &amp;lt;artifactId&gt;wagon-svn&amp;lt;/artifactId&amp;gt;&lt;br /&gt;        &amp;lt;version&gt;1.8&amp;lt;/version&amp;gt;&lt;br /&gt;      &amp;lt;/extension&amp;gt;&lt;br /&gt;    &amp;lt;/extensions&amp;gt;&lt;br /&gt;  &amp;lt;/build&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Then add a distributionManagement section to your project's POM, and specify the SVN location you created as the Maven repository to deploy artifacts to. For the &lt;code&gt;id&lt;/code&gt; you can use any string you like.&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;  &amp;lt;distributionManagement&amp;gt;&lt;br /&gt;    &amp;lt;repository&amp;gt;&lt;br /&gt;      &amp;lt;uniqueVersion&amp;gt;false&amp;lt;/uniqueVersion&amp;gt;&lt;br /&gt;      &amp;lt;id&amp;gt;myproject-maven-repo&amp;lt;/id&amp;gt;&lt;br /&gt;      &amp;lt;url&amp;gt;svn:http://forge.hippo-ecm.org/svn/myproject/maven2/&amp;lt;/url&amp;gt;&lt;br /&gt;    &amp;lt;/repository&amp;gt;&lt;br /&gt;  &amp;lt;/distributionManagement&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Finally, add credentials for the Maven/SVN repository to your Maven &lt;code&gt;settings.xml&lt;/code&gt;, located in the &lt;code&gt;.m2&lt;/code&gt; directory in your home directory (e.g. &lt;code&gt;/home/username/.m2/settings.xml&lt;/code&gt; on Unix). Right under the &lt;code&gt;settings&lt;/code&gt; element, add a &lt;code&gt;servers&lt;/code&gt; element:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;  &amp;lt;servers&amp;gt;&lt;br /&gt;    &amp;lt;server&amp;gt;&lt;br /&gt;      &amp;lt;id&gt;docselector-maven-repo&amp;lt;/id&amp;gt;&lt;br /&gt;      &amp;lt;username&gt;myname&amp;lt;/username&amp;gt;&lt;br /&gt;      &amp;lt;password&gt;secret&amp;lt;/password&amp;gt;&lt;br /&gt;    &amp;lt;/server&amp;gt;&lt;br /&gt;  &amp;lt;/servers&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;You should now be able to deploy artifacts to the SVN repository using the following command:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;shell&quot;&gt;&lt;br /&gt;mvn deploy&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Don't forget to add the location of the Maven repository to your project documentation! People need to add that repository location to their project POM or settings.xml in order to download dependencies from it.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-6938902042979972255?l=dev.nielsvk.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 31 Mar 2009 16:06:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Jeroen Reijn (Hippo): Apache Camel: open source integration framework</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-100576576454717007</guid>
	<link>http://blog.jeroenreijn.com/2009/03/apache-camel-open-source-integration.html</link>
	<description>I'm currently working on a project where we are looking at creating an integration layer for external applications to connect to our back-end applications. In our case, one of the back-end applications is &lt;a href=&quot;http://docs.onehippo.org/&quot;&gt;Hippo CMS 7's&lt;/a&gt; repository.&lt;br /&gt;&lt;br /&gt;I've been reading up on &lt;a href=&quot;http://en.wikipedia.org/wiki/Enterprise_service_bus&quot;&gt;ESB&lt;/a&gt;'s like &lt;a href=&quot;http://servicemix.apache.org/&quot;&gt;Apache ServiceMix&lt;/a&gt; and &lt;a href=&quot;http://synapse.apache.org/&quot;&gt;Synapse&lt;/a&gt;, but even though both projects look very interesting, they actually are a bit too much for what I want to do. There was one project though that seems to be exactly what I want: &lt;a href=&quot;http://camel.apache.org/&quot;&gt;Apache Camel&lt;/a&gt;.&lt;br /&gt;&lt;h3&gt;About Apache Camel&lt;/h3&gt;Apache Camel is an open source Java framework that focuses on making integration easier. One of the great things is that Camel comes with a lot of default components and connectors.&lt;br /&gt;Even though I was quite new to the integration concept, I was able to get my first Camel project up and running within 30 minutes or so, which I think is quite fast. You only need is a bit of Java/Spring knowledge to get going.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;The basic concepts&lt;/h3&gt;While using an integration framework like Camel, you will have to keep four key terms in mind:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;Endpoint&lt;/span&gt;: where the message comes in or leaves the integration layer&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Route&lt;/span&gt;: how a message goes from endpoint A to endpoint B&lt;/li&gt;&lt;li&gt;&lt;span&gt;Filter&lt;/span&gt;: the chained components that are involved in the process of handling a message that comes from endpoint A and goes to endpoint B. It could be that the content of the message  needs to be transformed from SOAP to for instance ATOM.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;Pipe&lt;/span&gt;: the way the message travels from endpoint A through filters to endpoint B&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;One of the things I'm looking at Camel for is using it to convert RSS feed entries into JCR nodes. If I would create an endpoint diagram, which would describe my route, it would look something like the image below.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://3.bp.blogspot.com/_hd6Y7yyFK7E/SdHfznTRvsI/AAAAAAAAANM/tdaCZzPnCZ8/s1600-h/camel_endpoints.png&quot;&gt;&lt;img src=&quot;http://3.bp.blogspot.com/_hd6Y7yyFK7E/SdHfznTRvsI/AAAAAAAAANM/tdaCZzPnCZ8/s400/camel_endpoints.png&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5319278712717426370&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;With Camel, the endpoints and routes can be configured in a few lines of Java code or with Spring XML configuration. I started out with the Spring XML configuration and it was actually quite easy to get going. Here is an example where I poll my own RSS feed and store the items into a mock 'feeds' object.&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;&lt;br /&gt;  xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;  xmlns:context=&quot;http://www.springframework.org/schema/context&quot;&lt;br /&gt;  xsi:schemaLocation=&quot;&lt;br /&gt;  http://www.springframework.org/schema/beans&lt;br /&gt;  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&lt;br /&gt;  http://www.springframework.org/schema/context&lt;br /&gt;  http://www.springframework.org/schema/context/spring-context-2.5.xsd&lt;br /&gt;  http://camel.apache.org/schema/spring&lt;br /&gt;  http://camel.apache.org/schema/spring/camel-spring.xsd&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&amp;gt;&lt;br /&gt;    &amp;lt;route&amp;gt;&lt;br /&gt;      &amp;lt;from uri=&quot;rss://http://blog.jeroenreijn.com/feeds/posts/default?alt=rss&quot; /&amp;gt;&lt;br /&gt;      &amp;lt;to uri=&quot;mock:feeds&quot;/&amp;gt;&lt;br /&gt;    &amp;lt;/route&amp;gt;&lt;br /&gt;  &amp;lt;/camelContext&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As you can see that's just a couple of lines of code. It's really that simple to do things in Camel. Of course this configuration does not end up in a JCR repository, but as an example I think it's quite easy to grasp. For those of you, that want to play around with Camel as well, I'll try to explain all the step I took to get a working web application example from here on. As I'm using &lt;a href=&quot;http://maven.apache.org/&quot;&gt;Maven2&lt;/a&gt; for building my projects, you should be able to reproduce my setup quite easily.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Setting up your maven project&lt;/h3&gt;First off we'll start with adding the camel dependencies to our maven project descriptor( pom.xml).&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;&amp;lt;dependencies&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;org.apache.camel&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;camel-core&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;${camel-version}&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;org.apache.camel&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;camel-spring&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;${camel-version}&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;spring-core&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;${spring-version}&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;spring-web&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;${spring-version}&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;  &amp;lt;dependency&amp;gt;&lt;br /&gt;    &amp;lt;groupId&amp;gt;org.apache.camel&amp;lt;/groupId&amp;gt;&lt;br /&gt;    &amp;lt;artifactId&amp;gt;camel-rss&amp;lt;/artifactId&amp;gt;&lt;br /&gt;    &amp;lt;version&amp;gt;${camel-version}&amp;lt;/version&amp;gt;&lt;br /&gt;  &amp;lt;/dependency&amp;gt;&lt;br /&gt;&amp;lt;/dependencies&amp;gt;&lt;br /&gt;&lt;/pre&gt;As you can see I explicitly added the camel-rss component, so that my camel application knows how to handle rss feeds. Camel does not have it's own RSS parser, but is using &lt;a href=&quot;https://rome.dev.java.net/&quot;&gt;Rome&lt;/a&gt; in the background for handling the RSS feeds. The Camel project is setup in such a way that you can include any component you want, by adding the needed component dependency to your pom.xml. If you're thinking about using Camel, make sure you checkout the &lt;a href=&quot;http://camel.apache.org/components.html&quot;&gt;components page&lt;/a&gt;, which shows you all of the currently available components.&lt;br /&gt;&lt;br /&gt;Camel uses Spring, so we need to add the Spring ContextLoaderListener to the local web.xml in &lt;span&gt;src/main/webapp/WEB-INF/&lt;/span&gt;.&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;web-app xmlns=&quot;http://java.sun.com/xml/ns/j2ee&quot;&lt;br /&gt;xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;xsi:schemaLocation=&quot;http://java.sun.com/xml/ns/j2ee&lt;br /&gt;http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd&quot;&lt;br /&gt;version=&quot;2.4&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;listener&amp;gt;&lt;br /&gt;    &amp;lt;listener-class&amp;gt;org.springframework.web.context.ContextLoaderListener&amp;lt;/listener-class&amp;gt;&lt;br /&gt;  &amp;lt;/listener&amp;gt;&lt;br /&gt;&amp;lt;/web-app&amp;gt;&lt;br /&gt;&lt;/pre&gt;The last step in our process is defining our endpoints. In my case I chose to use the Spring XML configuration for defining my endpoints.&lt;br /&gt;&lt;br /&gt;Add a file called &lt;span&gt;applicationContext.xml&lt;/span&gt; to your &lt;span&gt;src/main/webapp/WEB-INF/&lt;/span&gt; folder.&lt;br /&gt;Once the file is created you should be able to define your routes like this:&lt;br /&gt;&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;beans xmlns=&quot;http://www.springframework.org/schema/beans&quot;&lt;br /&gt;  xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&lt;br /&gt;  xmlns:context=&quot;http://www.springframework.org/schema/context&quot;&lt;br /&gt;  xsi:schemaLocation=&quot;&lt;br /&gt;  http://www.springframework.org/schema/beans&lt;br /&gt;  http://www.springframework.org/schema/beans/spring-beans-2.5.xsd&lt;br /&gt;  http://www.springframework.org/schema/context&lt;br /&gt;  http://www.springframework.org/schema/context/spring-context-2.5.xsd&lt;br /&gt;  http://camel.apache.org/schema/spring&lt;br /&gt;  http://camel.apache.org/schema/spring/camel-spring.xsd&quot;&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;camelContext xmlns=&quot;http://camel.apache.org/schema/spring&quot;&amp;gt;&lt;br /&gt;    &amp;lt;route&amp;gt;&lt;br /&gt;      &amp;lt;from uri=&quot;rss://http://blog.jeroenreijn.com/feeds/posts/default?alt=rss&quot; /&amp;gt;&lt;br /&gt;      &amp;lt;to uri=&quot;mock:feeds&quot;/&amp;gt;&lt;br /&gt;    &amp;lt;/route&amp;gt;&lt;br /&gt;  &amp;lt;/camelContext&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/beans&amp;gt;&lt;br /&gt;&lt;/pre&gt;In this example I'm using my own RSS feed, but you can of course use any feed url you like.&lt;br /&gt;For testing purposes you can add a &lt;span&gt;log4j.properties&lt;/span&gt; file in &lt;span&gt;src/main/resources/&lt;/span&gt;, so you can see the output of the Camel RSS component in your console. Here is the configuration I used writing this blogpost.&lt;br /&gt;&lt;pre name=&quot;code&quot;&gt;&lt;br /&gt;#&lt;br /&gt;# The logging properties used for eclipse testing, We want to see debug output on the console.&lt;br /&gt;#&lt;br /&gt;log4j.rootLogger=INFO, out&lt;br /&gt;&lt;br /&gt;# uncomment the following line to turn on Camel debugging&lt;br /&gt;log4j.logger.org.apache.camel=DEBUG&lt;br /&gt;&lt;br /&gt;# uncomment the following line to turn on ActiveMQ debugging&lt;br /&gt;log4j.logger.org.springframework=INFO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# CONSOLE appender not used by default&lt;br /&gt;log4j.appender.out=org.apache.log4j.ConsoleAppender&lt;br /&gt;log4j.appender.out.layout=org.apache.log4j.PatternLayout&lt;br /&gt;log4j.appender.out.layout.ConversionPattern=[%30.30t] %-30.30c{1} %-5p %m%n&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Well that's it. Now the only thing you will need to do is fire up an application container, like Jetty and see what's going on in the console.&lt;br /&gt;&lt;br /&gt;$ mvn jetty:run&lt;br /&gt;&lt;br /&gt;If Jetty is running and everything is setup correctly you should be able to see some debug information come by that looks like:&lt;br /&gt;&lt;br /&gt;&lt;pre name=&quot;code&quot;&gt;&lt;br /&gt;SyndFeedImpl.author=noreply@blogger.com (Jeroen Reijn)&lt;br /&gt;SyndFeedImpl.authors=[]&lt;br /&gt;SyndFeedImpl.title=Jeroen Reijn&lt;br /&gt;SyndFeedImpl.description=&lt;br /&gt;SyndFeedImpl.feedType=rss_2.0&lt;br /&gt;SyndFeedImpl.encoding=null&lt;br /&gt;SyndFeedImpl.entries[0].contributors=[]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As you will see the RSS feed is parsed and converted into a SyndFeed object.&lt;br /&gt;From there on you can make use of this object and perform any operation on it.&lt;br /&gt;&lt;br /&gt;I must admit that while playing around with Camel and RSS feeds, &lt;br /&gt;I noticed that the RSS (and Atom) component did not handle extra request parameters correctly, so I added a patch in the Camel JIRA, hoping it wil be included in the next release of Camel.&lt;br /&gt;If you have issues with the RSS component and request parameters, you might want to try to build the Camel SVN trunk and apply my patch (&lt;a href=&quot;https://issues.apache.org/activemq/browse/CAMEL-1496&quot;&gt;CAMEL-1496&lt;/a&gt;).&lt;br /&gt;This is only necessary if you want to parse a feed that has for instance a unique id as request parameter added to the feed URL.&lt;br /&gt;&lt;br /&gt;We'll that's it! This post will get a follow-up, where I will show you have to use Camel to actually store the RSS feed entries into a JCR repository.&lt;br /&gt;&lt;br /&gt;Here are a couple of good articles too read before starting with Camel:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://camel.apache.org/&quot;&gt;Apache Camel (official website)&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://architects.dzone.com/articles/apache-camel-integration&quot;&gt;Apache Camel: Integration Nirvana&lt;/a&gt; (@&lt;a href=&quot;http://www.dzone.com/&quot;&gt;dzone&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://refcardz.dzone.com/refcardz/enterprise-integration&quot;&gt;Camel Reference card (@dzone)&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span&gt;This blogpost was inspired by an article over at &lt;a href=&quot;http://www.gridshore.nl/&quot;&gt;Gridshore&lt;/a&gt;, where Jettro  wrote a post on using &lt;a href=&quot;http://www.gridshore.nl/2009/03/29/using-spring-integration-for-rss-reading/&quot;&gt;Spring Integrations&lt;/a&gt; as integration framework. Since I'm pretty much Apache minded, I have been looking around for other open source integration frameworks within the ASF, which brought me to Apache Camel.&lt;/span&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-100576576454717007?l=blog.jeroenreijn.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 31 Mar 2009 13:01:22 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): ApacheCon Europe 2009</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-3842639938777083472</guid>
	<link>http://dev.nielsvk.com/2009/03/apachecon-europe-2009.html</link>
	<description>I'm just back from a trip to Amsterdam for the &lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/&quot;&gt;ApacheCon Europe&lt;/a&gt;. It was a very short trip (too short!) and it all went by too fast. Some hightlights:&lt;br /&gt;&lt;br /&gt;I attended the &lt;a href=&quot;http://wiki.apache.org/portals/MeetupAmsterdam2009&quot;&gt;Portals&lt;/a&gt; and &lt;a href=&quot;http://cwiki.apache.org/WICKET/wicket-community-meetups-amsterdam.html&quot;&gt;Wicket&lt;/a&gt; Meetups. For some reason I find these low key meetups always much more interesting than the &quot;real&quot; conference. The talks are usually shorter and more spontaneous, and there is more interaction with the audience. Unfortunately the meetups were in the evening, and with a fresh jet lag I had a hard time staying focused, and I didn't make it all the way to the end of the Wicket meetup (I heard it only ended after 11 PM!).&lt;br /&gt;&lt;br /&gt;My &lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/162&quot;&gt;talk about documentation&lt;/a&gt; on Thursday went exceptionally well. Documentation is usually not the most popular subject at ApacheCons, so I was happy to see about 25 people turn up - about the average for the talks I attended, so not bad at all! There were a lot of questions and quite a bit of discussion afterwards, and I got some good feedback to improve my talk. I heard some cool ideas - more on this in another blog post later!&lt;br /&gt;&lt;br /&gt;I have to admit that I did not attend that many talks at the conference. I tried to get at least some of the Hadoop hype on Wednesday, and saw some interesting talks on continuous integration (&quot;in the cloud!&quot;) on Friday. Most of my time was taken however by preparing my talk and getting updated by my Hippo colleagues on their latest work (the new Hippo Site Toolkit is really cool!).&lt;br /&gt;&lt;br /&gt;Of course visiting Amsterdam was also an opportunity to see my friends and family. Instead of staying at the conference hotel I chose to crash at my cousin Martin's place, in the same neighborhood I lived in for 3 years. Despite both having a very busy schedule, we managed to have a delicious dinner at student-run restaurant &lt;a href=&quot;http://dev.nielsvk.com/page=site.calendar/lang=nl?start&quot;&gt;Studio K&lt;/a&gt;, and see the exhibition of &lt;a href=&quot;http://en.wikipedia.org/wiki/Richard_Avedon&quot;&gt;Richard Avedon&lt;/a&gt;'s intriguing photographs at &lt;a href=&quot;http://www.foam.nl/&quot;&gt;Foam&lt;/a&gt; (Amsterdam's Photography Museum). The weather was very Dutch the whole week - cold, rainy, and windy. But this did not keep me from enjoying riding my bike through the city. It was good the be back in Amsterdam!&lt;br /&gt;&lt;br /&gt;The week was finished in style with drinks and &lt;a href=&quot;http://en.wikipedia.org/wiki/Bitterballen&quot;&gt;bitterballen&lt;/a&gt; with my Hippo colleagues in the Muziekgebouw - a fabulous location with a grand view over the river. My friend Andre (for those who attended my talk, yes, the Microsoft guy) joined us and we had a great evening.&lt;br /&gt;&lt;br /&gt;Unfortunately my busy schedule never really let me catch up with the jet lag, and boarding the plane back to San Francisco on Sunday, I felt completely wrecked. Nevertheless it was an inspiring trip, and the Californian sun is already recharging my batteries ;-)&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-3842639938777083472?l=dev.nielsvk.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 30 Mar 2009 22:01:20 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): My Friday at ApacheCon Europe 2009</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-8534715800537262370</guid>
	<link>http://blog.jasha.eu/2009/03/my-friday-at-apachecon-europe-2009.html</link>
	<description>&lt;p&gt;Last Friday I went to the 3rd conference day of &lt;a href=&quot;http://www.eu.apachecon.com&quot;&gt;ApacheCon Europe&lt;/a&gt; 2009.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/186&quot;&gt;Becoming a Tomcat superuser&lt;/a&gt; - In this &quot;Geeks for geeks&quot; session Mark Thomas explained about the Subversion structure of the Apache Tomcat project and how to build the several versions. He demonstrated how you could debug Tomcat in Eclipse and create or apply a patch. His explanations were very clear so if I'm ever going to patch my own Tomcat, I know how to do it now.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/181&quot;&gt;Scripting your Java application with BSF&lt;/a&gt; - The rest of the day I went to the &quot;Java development&quot; sessions. With all Rhino code in Hippo CMS 6 in mind I chose to go to this session. Using a scripting language may seem an easy way to develop you application but in the end it's hard to debug and maintain. Felix Meschberger demonstrated using several scripting languages (Rhino, Groovy) in a Java application. It looked easy to use.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/activities/33&quot;&gt;Apache Pioneer's Panel - 10 years of The Apache Software Foundation&lt;/a&gt;. The history of the ASF with stories of the past 10 years. Very funny if you were actually at the events they were talking about.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/182&quot;&gt;What's new with Apache POI&lt;/a&gt; - I used POI once for my ApacheCon Europe 2007 talk with Jeroen Reijn about Cocoon to generate a MS Excel file. I didn't know Apache POI supported that many MS Office formats (Word, Excel, PowerPoint, Outlook, Visio and Publisher). Nick Burch ran through the several formats and pointed out the most frequently made errors while using POI.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/183&quot;&gt;Apache DS 2.0 : What's new ?&lt;/a&gt; Apache DS is one of the projects I've never used. I went to this session with my colleague Dennis who has much more to do with LDAP, authentication and user management. For his work (portals) it was way more interesting than for me (public websites) but it was very interesting to hear the possibilities of Apache DS. I should install Apache Directory Studio for browsing our internal LDAP development environment.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/sessions/184&quot;&gt;Shindig for Blogs and Wikis&lt;/a&gt; - This was a perfect talk for the end of the day. Cool product and a hot subject so people are paying attention and they're not leaving although it's getting late.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.eu.apachecon.com/c/aceu2009/activities/37&quot;&gt;Closing event &amp;amp; raffle&lt;/a&gt; - First a &quot;thank you all and see you at the next event&quot;. At the raffle I got the lucky lot. By pure randomness and luck I won a 15&quot; digital picture frame that also plays video! :D So don't leave early, there's something to win after the talks.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-8534715800537262370?l=blog.jasha.eu&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 29 Mar 2009 08:01:30 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Jeroen Reijn (Hippo): Using Daemon modules with Hippo CMS 7</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-5085309358284165864</guid>
	<link>http://blog.jeroenreijn.com/2009/03/using-daemon-modules-with-hippo-cms-7.html</link>
	<description>Recently I was working on a new &lt;a href=&quot;http://www.onehippo.org/cms7/&quot;&gt;Hippo CMS 7&lt;/a&gt; based project, where I was in need of a repository component that could run in the background and perform some scheduled tasks.&lt;br /&gt;&lt;br /&gt;While talking to some colleagues about what I had to do, they pointed me to a build-in solution for adding repository components, which are initiated at startup.&lt;br /&gt;&lt;br /&gt;It was actually very simple to implement this feature, so I'll try to describe how you can achieve the same solution in some very small steps.&lt;br /&gt;&lt;br /&gt;The first thing you will need to do is create a Java class that implements the &lt;span&gt;DaemonModule&lt;/span&gt; interface. As an example I've created the &lt;span&gt;BackgroundModule&lt;/span&gt; as shown below. &lt;br /&gt;&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;package com.onehippo.repository;&lt;br /&gt;&lt;br /&gt;import javax.jcr.RepositoryException;&lt;br /&gt;import javax.jcr.Session;&lt;br /&gt;&lt;br /&gt;import org.hippoecm.repository.ext.DaemonModule;&lt;br /&gt;import org.slf4j.Logger;&lt;br /&gt;import org.slf4j.LoggerFactory;&lt;br /&gt;&lt;br /&gt;public class BackgroundModule implements DaemonModule{&lt;br /&gt;&lt;br /&gt; static final Logger log = LoggerFactory.getLogger(BackgroundModule.class);&lt;br /&gt; static Session session = null;&lt;br /&gt;   &lt;br /&gt; public void initialize(Session session) throws RepositoryException {&lt;br /&gt;     this.session = session; &lt;br /&gt;     &lt;br /&gt;  log.info(&quot;BackgroundModule started&quot;); &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; public void shutdown() {&lt;br /&gt;  session.logout();&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You might wonder how the repository knows about these daemon modules? Well the trick is that the repository goes through all '&lt;span&gt;MANIFEST.MF&lt;/span&gt;' files, which it can find on the classpath. If the MANIFEST.MF file contains an entry for the property '&lt;span&gt;Hippo-Modules&lt;/span&gt;', it will be added to the list of available modules. Once finished finding all modules it will start to initialize each of them and pass on an authorized JCR session, so you will be able to work with all information inside the repository. &lt;br /&gt;&lt;br /&gt;I'm always using Maven 2 while working with CMS 7. Maven 2 has some usefull utilities and it can help you you out with adding the correct manifest entry. In my pom.xml I added some configuration for the maven-jar-plugin that adds my module to the manifest.&lt;br /&gt;&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;&lt;br /&gt; &amp;lt;plugin&amp;gt;&lt;br /&gt;   &amp;lt;groupid&amp;gt;org.apache.maven.plugins&amp;lt;/groupid&amp;gt;&lt;br /&gt;   &amp;lt;artifactid&amp;gt;maven-jar-plugin&amp;lt;/artifactid&amp;gt;&lt;br /&gt;   &amp;lt;configuration&amp;gt;&lt;br /&gt;     &amp;lt;archive&amp;gt;&lt;br /&gt;       &amp;lt;manifest&amp;gt;&lt;br /&gt;         &amp;lt;adddefaultimplementationentries&amp;gt;true&amp;lt;/adddefaultimplementationentries&amp;gt;&lt;br /&gt;       &amp;lt;/manifest&amp;gt;&lt;br /&gt;       &amp;lt;manifestentries&amp;gt;&lt;br /&gt;         &amp;lt;hippo-modules&amp;gt;com.onehippo.repository.BackgroundModule&amp;lt;/hippo-modules&amp;gt;&lt;br /&gt;       &amp;lt;/manifestentries&amp;gt;&lt;br /&gt;     &amp;lt;/archive&amp;gt;&lt;br /&gt;   &amp;lt;/configuration&amp;gt;&lt;br /&gt; &amp;lt;/plugin&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If you need to add more then one module, you can do so by adding a space in between modules.&lt;br /&gt;&lt;br /&gt;For the project I was doing, I also made use of &lt;a href=&quot;http://www.opensymphony.com/quartz/&quot;&gt;Quartz&lt;/a&gt; triggers, so my module would execute once in a while instead of just after initialization of the repository. &lt;br /&gt;&lt;br /&gt;The concept of these modules is quite powerful, so I hope this can help you to get started with writing your own Daemon modules.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-5085309358284165864?l=blog.jeroenreijn.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Sun, 22 Mar 2009 12:44:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Tjeerd D. Brenninkmeijer (Hippo): The Hippo CMS Vendor meme</title>
	<guid>http://blogs.hippo.nl/tjeerd/2009/03/the_hippo_meme.html</guid>
	<link>http://blogs.hippo.nl/tjeerd/2009/03/the_hippo_meme.html</link>
	<description>We have been challenged by &lt;a href=&quot;http://betterfasterbigger.blogspot.com/2009/03/cms-vendor-meme.html&quot;&gt;Magnolia&lt;/a&gt; to participate in the CMS Vendor Meme. Thanks, guys ;)

First off, I think you can only get something like an independent answer when you stick to open source system 'vendors'. You can validate whatever they say by asking the community. You can download the system and see for yourself. But whatever you do - don't ask a closed source vendor :). 
Or let analysts like &lt;a href=&quot;http://www.contenthere.net/category/hippo&quot;&gt;Seth Gottlieb&lt;/a&gt;, or the people at &lt;a href=&quot;http://www.cmswatch.com/CMS/Vendors/Hippo&quot;&gt;CMS watch&lt;/a&gt; and &lt;a href=&quot;http://www.cmswire.com/cms/open-source-cms/open-source-hippo-cms-70-gets-revamped-core-003822.php&quot;&gt;CMS Wire&lt;/a&gt; decide whether or not &quot;you get it&quot;. But since it was &lt;a href=&quot;http://www.cmswatch.com/Trends/1518-A-reality-checklist-for-vendors&quot;&gt;CMS Watch's Kas Thomas&lt;/a&gt;, we'll gladly help him with the first shifting :)


So here we go:
1. Our software comes with an installer program - Sort of

We understand that for someone reviewing a CMS an installer is nice. So go ahead: download the &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/quickstart.html&quot;&gt;ZIP file&lt;/a&gt;, unzip it, doubleclick the starter and you're done. But in all honesty, our customers run &lt;a href=&quot;http://www.onehippo.org/cms7&quot;&gt;Hippo&lt;/a&gt; in environments with one, two, eleven, or - if they want - a gazillion installations across a clustered environment. They are &lt;b&gt;not&lt;/b&gt; interested in clicking through an installer on every single installation. They want to roll out quickly and securely, in a controlled fashion. That's why we have WAR and EAR builds. They're the standard in the Enterprise world, and not for nothing.

2. Installing or uninstalling our software does not require a reboot of your machine - Yes

No restart required. Can't agree more with the Magnolia guys: why are you asking? Because other CMS systems only have a Windows installer that requires a reboot? :-P

3. You can choose your locale and language at install time, and never have to see English again after that - Sort of

We (Europeans) like to give the editor the option to change and work with different languages. We'll have to! :-)

4. Eval versions of the latest edition(s) of our software are always available for download from the company website - 

Yes, well, no. We don't have an evaluation version. Instead, we give you &lt;b&gt;the whole shebang, freely available online&lt;/b&gt; at &lt;a href=&quot;http://www.onehippo.org&quot;&gt;www.onehippo.org&lt;/a&gt;. We don't believe in baitware. We are 100% open source.

5. Our WCM software comes with a fully templated &quot;sample web site&quot; and sample workflows, which work</description>
	<pubDate>Wed, 18 Mar 2009 16:25:38 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Apache Meetups: next week!</title>
	<guid>http://blogs.hippo.nl/arje/2009/03/apache_meetups_next_week.html</guid>
	<link>http://blogs.hippo.nl/arje/2009/03/apache_meetups_next_week.html</link>
	<description>&lt;h2&gt;Wicket, Maven, Lucene, Jackrabbit and Portals Evening Meetups&lt;/h2&gt;

&lt;p&gt;Join us for a third year of Apache Meetups! Users, committers, managers and developers will come together on the evenings of &lt;b&gt;Monday 23rd and Tuesday 24th of March&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Registration is &lt;b&gt;free of charge&lt;/b&gt;, and</description>
	<pubDate>Mon, 16 Mar 2009 14:59:51 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Wicket use case testing with Selenium</title>
	<guid>http://blogs.hippo.nl/arje/2009/02/wicket_use_case_testing_with_s.html</guid>
	<link>http://blogs.hippo.nl/arje/2009/02/wicket_use_case_testing_with_s.html</link>
	<description>&lt;p&gt;Our very own mr AJAX, &lt;a href=&quot;http://www.ohloh.net/accounts/abogaart&quot;&gt;Arthur&lt;/a&gt;, blogs about &lt;a href=&quot;http://blogs.hippo.nl/arthur/2009/02/hippoecm_integration_testing_w.html&quot;&gt;how we perform&lt;/a&gt; automated &lt;a href=&quot;http://seleniumhq.org/&quot;&gt;Selenium&lt;/a&gt; tests on &lt;a href=&quot;http://wicket.apache.org&quot;&gt;Wicket&lt;/a&gt; components&lt;/a&gt; for &lt;a href=&quot;http://www.onehippo.org/cms7&quot;&gt;Hippo CMS 7&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Although he credits me for the video, I was merely playing the annoying voice-over and shaky-cam-operator role :-). Arthur does all the talking. So here's credit back, 'Thuur.&lt;/p&gt;

&lt;p&gt;In his blog, he explains how we had to tweak the Wicket markup ids to get Selenium to work.&lt;/p&gt;

&lt;p&gt;&quot;Use case testing&quot; is my term for what Arthur (and with him probably the rest of the world) calls &quot;integration testing&quot;. This is where we bring together two very important stakeholders into our development project: on one hand, the developers want to know whether integration doesn't break functionality, and on the other hand, users and testers want to know whether the new version of the system has at least the same level of functionality and stability as the last time they tested it. That's why, at the end of each development &lt;a href=&quot;http://www.controlchaos.com/about/&quot;&gt;Sprint&lt;/a&gt;, we have a round of user testing. During that phase we record the use cases that the testers perform and add that to our set of automated Selenium tests.&lt;/p&gt;

&lt;p&gt;Go ahead and enjoy &lt;a href=&quot;http://blogs.hippo.nl/arthur/2009/02/hippoecm_integration_testing_w.html&quot;&gt;Arthur's blog and the demonstration video&lt;/a&gt; (and my shaky camera moves).&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://blogs.hippo.nl/arthur/2009/02/hippoecm_integration_testing_w.html&quot;&gt;&lt;img alt=&quot;selenium.jpg&quot; src=&quot;http://blogs.hippo.nl/arje/selenium.jpg&quot; width=&quot;569&quot; height=&quot;357&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Tue, 17 Feb 2009 07:49:27 +0000</pubDate>
</item>
<item>
	<title>Arthur Bogaart (Hippo): HippoCMS 7 integration testing with Selenium</title>
	<guid>http://blogs.hippo.nl/arthur/2009/02/hippoecm_integration_testing_w.html</guid>
	<link>http://blogs.hippo.nl/arthur/2009/02/hippoecm_integration_testing_w.html</link>
	<description>&lt;p&gt;Integration tests are designed to check the functionality of an application as a whole, rather than focussing on the internal workings of individual software modules, which is the domain of normal unit testing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Selenium&lt;/strong&gt;&lt;br /&gt;</description>
	<pubDate>Mon, 16 Feb 2009 12:40:18 +0000</pubDate>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): How to add the YouTube plugin in Hippo CMS 7</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-76020706690595203</guid>
	<link>http://blog.jasha.eu/2009/02/how-to-add-youtube-plugin-in-hippo-cms.html</link>
	<description>&lt;p&gt;The &lt;a href=&quot;http://forge.onehippo.org/projects/youtubetemplate/&quot;&gt;YouTube Template Plug-in&lt;/a&gt; is a very simple, but cool project in the &lt;a href=&quot;http://forge.onehippo.org/&quot;&gt;Hippo ECM forge&lt;/a&gt;. The plugin was created by our former intern &lt;a href=&quot;http://tietema.net/&quot;&gt;Jeroen Tietema&lt;/a&gt;. With this plug-in you can easily add YouTube videos to your documents. In this blog I'll explain how to add this plug-in into your Hippo ECM project. I assume you have already checked out and &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/core/building/maven.html&quot;&gt;built Hippo ECM from source&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://forge.onehippo.org/scm/?group_id=17&quot;&gt;Check out&lt;/a&gt; the YouTube plug-in from SVN and build it using Maven with the following command:&lt;/p&gt;
&lt;code&gt;mvn install&lt;/code&gt; 

&lt;p&gt;Then add the dependency to the pom.xml of quickstart/war&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;xml&quot;&gt;
&amp;lt;!-- YouTube Template plugin for Hippo ECM 2.03.00 --&amp;gt;
&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.onehippo.addon.frontend.youtube&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;youtube-plugins&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;1.01.00-SNAPSHOT&amp;lt;/version&amp;gt;
    &amp;lt;type&amp;gt;jar&amp;lt;/type&amp;gt;
&amp;lt;/dependency&amp;gt;
&lt;/pre&gt;


&lt;h3&gt;Configuration in the console&lt;/h3&gt;
&lt;p&gt;(Re)start the Hippo ECM war and go to the console on &lt;a href=&quot;http://localhost:8080/cms/console&quot;&gt;http://localhost:8080/cms/console&lt;/a&gt;.
&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3276163015/&quot; title=&quot;01_console by JAsha J, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3497/3276163015_685924bd2e_m.jpg&quot; width=&quot;240&quot; height=&quot;173&quot; alt=&quot;Hippo ECM Console&quot; /&gt;&lt;/a&gt;
Navigate to the following location: &lt;/p&gt;
            
&lt;code&gt;/hippo:namespaces/hippo/templatetype/hippo:template/hippo:template/list&lt;/code&gt;

&lt;p&gt;Now add the value &lt;b&gt;Youtube&lt;/b&gt; to the &lt;b&gt;templates&lt;/b&gt; property and save the changes. Make sure you log out of the CMS and back in (the list is cached in your session). &lt;/p&gt;

&lt;h3&gt;CMS template editor&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3276982700/&quot; title=&quot;02_template_editor by JAsha J, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3356/3276982700_de50d4f6df_m.jpg&quot; width=&quot;240&quot; height=&quot;173&quot; alt=&quot;Template editor&quot; /&gt;&lt;/a&gt;Go to the template editor in the CMS. You can either create a new document type or add the new YouTube field to an existing template. Save the template and choose &quot;Update all content&quot; from the drop down menu in the top bar.&lt;/p&gt;

&lt;h3&gt;Editor&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3276163129/&quot; title=&quot;03_editor by JAsha J, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3495/3276163129_3ecf3058e9_m.jpg&quot; width=&quot;240&quot; height=&quot;173&quot; alt=&quot;Add Youtube movie to a document&quot; /&gt;&lt;/a&gt;Now the plug-in has been configured and added to the template, the CMS users can add YouTube videos to their documents. Just paste the ID of the video into the YouTube field.&lt;/p&gt;

&lt;p&gt;If you are not editing the document you get a preview of the selected video:
&lt;br /&gt;
&lt;a href=&quot;http://www.flickr.com/photos/jashaj/3276982818/&quot; title=&quot;04_preview by JAsha J, on Flickr&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3301/3276982818_62b6fea8dc_m.jpg&quot; width=&quot;240&quot; height=&quot;173&quot; alt=&quot;04_preview&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-76020706690595203?l=blog.jasha.eu&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 13 Feb 2009 16:35:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): Using the Hippo Repository Workflow API</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-7834634947007393754</guid>
	<link>http://dev.nielsvk.com/2009/02/using-hippo-repository-workflow-api.html</link>
	<description>&lt;a href=&quot;http://www.onehippo.org/cms7/&quot;&gt;Hippo CMS 7&lt;/a&gt; provides workflow functionality not only through its GUI, but also through its Repository API. Without ever logging in to the CMS, you can create, edit and publish documents from your own Java application. I would like to give you a simple example of editing a document, and requesting publication. The complete example is downloadable as a &lt;a href=&quot;http://repository.hippocms.org/scratchpad/workflow.tar.gz&quot;&gt;zipped Maven project&lt;/a&gt; that works out of the box with the &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/quickstart.html&quot;&gt;Hippo CMS 7 Quickstart package&lt;/a&gt; version 2.03.00.&lt;br /&gt;&lt;br /&gt;Before we start, I suggest you read the &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/custom/jcr/jcr.html&quot;&gt;JCR basics&lt;/a&gt; and &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/custom/jcr/examples.html&quot;&gt;examples&lt;/a&gt; in the Hippo CMS documentation. These will give you a general idea of how to connect to and work with the repository through the API.&lt;br /&gt;&lt;br /&gt;Connecting to Hippo Repository is pretty straightforward:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;HippoRepository repository = HippoRepositoryFactory.getHippoRepository(&quot;rmi://localhost:1099/hipporepository&quot;);&lt;br /&gt;Session session =  repository.login(&quot;author&quot;, &quot;author&quot;.toCharArray());&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For simplicity, let's just use some hardcoded values for the document location, the name of the field we are going to edit, and the new value we are going to give the field:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;String path = &quot;/preview/content/articles/myarticle1&quot;;&lt;br /&gt;String field = &quot;defaultcontent:title&quot;;&lt;br /&gt;String content = &quot;Hello World!!!&quot;;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;First we retrieve the document node from the repository:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;HippoNode documentNode = (HippoNode) session.getItem(path);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This node is a so-called handle: an umbrella under which each variant of the document is stored. These variants can be different languages, different versions, different workflow states, you name it. Each variant is represented as a child node of the handle node, and has the exact same name as the handle node. In the quickstart application you will only find variants with different workflow states. Let's get one of the variants:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;documentNode = (HippoNode) documentNode.getNode(documentNode.getName());&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Which variant we get is actually not really important, as we only use it to get to the documents workflow.&lt;br /&gt;&lt;br /&gt;First however, we need to make sure we are using a physical node. Nodes inside Hippo Repository can be virtual. That means that they do not exist at that location, but rather they represent a node in a different physical location. This allows different organizations of your content without duplicating any data. The virtual nodes are generated on the fly. Since they do not exist in that particular physical location, we need to retrieve the original node and save our changes there. This is done through the getCanonicalNode() method:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;documentNode = (HippoNode) documentNode.getCanonicalNode();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now that we finally have the node we want to work with, we can obtain the document's workflow, through the workspace and workflow manager:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;HippoWorkspace workspace = (HippoWorkspace) documentNode.getSession().getWorkspace();&lt;br /&gt;WorkflowManager workflowMgr = workspace.getWorkflowManager();&lt;br /&gt;Workflow workflow = workflowMgr.getWorkflow(&quot;default&quot;, documentNode);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If the workflow is of the type BasicReviewedActionsWorkflow (it should be in the quickstart application), we can obtain an editable instance of the document. Regardless of the state the document's workflow is in, this will give us a draft version to work with.&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;if (workflow instanceof BasicReviewedActionsWorkflow) {&lt;br /&gt;  BasicReviewedActionsWorkflow braw = (BasicReviewedActionsWorkflow) workflow;&lt;br /&gt;  Document doc = braw.obtainEditableInstance();&lt;br /&gt;  String uuid = doc.getIdentity();&lt;br /&gt;  documentNode = (HippoNode) session.getNodeByUUID(uuid);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;With the editable instance, we can start making our changes. First we need to find out where the field we want to edit is stored. Fields can be stored either as a property, or as a child node. Hence we check for a child node and for a property matching the name of our field:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;Property contentProperty;&lt;br /&gt;if (documentNode.hasNode(field)) {&lt;br /&gt;  HippoNode fieldNode = (HippoNode) documentNode.getNode(field);&lt;br /&gt;  if (fieldNode.hasProperty(&quot;hippostd:content&quot;)) {&lt;br /&gt;      contentProperty = fieldNode.getProperty(&quot;hippostd:content&quot;);&lt;br /&gt;  }&lt;br /&gt;} else if (documentNode.hasProperty(field)) {&lt;br /&gt;  contentProperty = documentNode.getProperty(field);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;We now have all the information we need, and can make our change on the node property using the setValue() method. Through the workflow we can then request publication, and commit our editable instance. Finally, we save the JCR session so our changes (including the request for publication) are persisted:&lt;br /&gt;&lt;pre name=&quot;code&quot; class=&quot;java&quot;&gt;&lt;br /&gt;if (contentProperty != null) {&lt;br /&gt;  contentProperty.setValue(content);&lt;br /&gt;  BasicReviewedActionsWorkflow wf = (BasicReviewedActionsWorkflow) workflow;&lt;br /&gt;  wf.requestPublication();&lt;br /&gt;  wf.commitEditableInstance();&lt;br /&gt;  session.save();&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If you now log in to Hippo CMS, you should see the document listed in the Workflow To Do list on the dashboard.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://repository.hippocms.org/scratchpad/workflow.tar.gz&quot;&gt;Download the complete example&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-7834634947007393754?l=dev.nielsvk.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Fri, 13 Feb 2009 01:02:09 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Arje Cahn (Hippo): Introduction to imagesets</title>
	<guid>http://blogs.hippo.nl/arje/2009/02/imagesets_in_hippo_cms_7.html</guid>
	<link>http://blogs.hippo.nl/arje/2009/02/imagesets_in_hippo_cms_7.html</link>
	<description>&lt;p&gt;An image is not just *one* image to us. It can come in a wide variety of representations. The image that the user uploads, can be (automatically) scaled to different sizes, translated into different languages, or have different versions for different target audiences. All of these different insta</description>
	<pubDate>Tue, 03 Feb 2009 11:56:19 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Hippo CMS 7 is live!</title>
	<guid>http://blogs.hippo.nl/arje/2009/01/were_live_go_get_hippo.html</guid>
	<link>http://blogs.hippo.nl/arje/2009/01/were_live_go_get_hippo.html</link>
	<description>&lt;p&gt;Go get Hippo CMS 7 at &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/quickstart.html&quot;&gt;http://www.onehippo.org&lt;/a&gt;, try out the distro and knock yourself out.&lt;/p&gt;

&lt;div id=&quot;media&quot;&gt;
            
                
                
                
                
                
                
                
                
                
            
        &lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
I need to thank so many people, that I wouldn't know where to start. Most of all, I need to thank &quot;The Guys Upstairs&quot; for all their hard coding in the last couple of months. Berry, Frank, Bart, Arthur, Ard and Auke, thank you. It's been a rocky ride but it was worth it. I also need to thank Niels, Rita, Jeroen, Jeroen, another Jeroen, Dennis, Jettro, Jasha, Ate, David, Woonsan, Vivek, Anton, Mathijs, Wouter, Tjeerd, Jeff&amp;Jody;, Ruben, Johan, Wander and Mike for their contributions. The &quot;Guys Downstairs&quot; (you know who you are!), folks in the US, the marketing people, our customers, everyone from &lt;a href=&quot;http://jackrabbit.apache.org&quot;&gt;Jackrabbit&lt;/a&gt;, &lt;a href=&quot;http://wicket.apache.org&quot;&gt;Wicket&lt;/a&gt;, &lt;a href=&quot;http://maven.apache.org&quot;&gt;Maven&lt;/a&gt;, &lt;a href=&quot;http://lucene.apache.org&quot;&gt;Lucene&lt;/a&gt; and everyone else who influenced this incredible new version of Hippo CMS.. Thanks.&lt;/p&gt;

&lt;p&gt;Hippo CMS 7 was built on &lt;a href=&quot;http://jackrabbit.apache.org&quot;&gt;Apache Jackrabbit&lt;/a&gt;, &lt;a href=&quot;http://lucene.apache.org&quot;&gt;Lucene&lt;/a&gt;, &lt;a href=&quot;http://wicket.apache.org&quot;&gt;Wicket&lt;/a&gt; and many other &lt;a href=&quot;http://www.apache.org&quot;&gt;Apache&lt;/a&gt; projects. Combine these really powerful components, add a little &lt;a href=&quot;http://blogs.hippo.nl/arje/2007/09/status_update_defining_facets.html&quot;&gt;faceted navigation&lt;/a&gt;, a touch of &lt;a href=&quot;http://blogs.hippo.nl/arje/2007/08/hippo_ecm_platform_a_pluggable.html&quot;&gt;plugin framework&lt;/a&gt; and &lt;a href=&quot;http://www.ohloh.net/p/hippoecm&quot;&gt;36 person years of development&lt;/a&gt; [1] and you have Hippo CMS 7 :-)&lt;/p&gt;

&lt;p&gt;Oh, and it's open source. Go get our code from &lt;a href=&quot;http://svn.onehippo.org/repos/hippo/hippo-ecm/&quot;&gt;http://svn.onehippo.org/repos/hippo/hippo-ecm/&lt;/a&gt;, check out the &lt;a href=&quot;http://www.onehippo.org/cms7/delve_into/custom/howto/index.html&quot;&gt;Hello World example&lt;/a&gt;, and start your own plugin project at the &lt;a href=&quot;http://forge.onehippo.org&quot;&gt;Hippo Forge&lt;/a&gt;. The first 25 people to build a really neat plugin on the forge will receive one of those funky Hippo T-shirts. What's neat? A Google Maps location picker is neat, and maybe a Flickr image plugin is neat, too :)&lt;/p&gt;

&lt;p&gt;If you have questions, or would like to share some feedback, feel free to sign up to our &lt;a href=&quot;http://www.onehippo.org/cms7/mail-lists.html&quot;&gt;CMS 7 User list&lt;/a&gt;. Your comments are very well appreciated! :)&lt;/p&gt;

&lt;p&gt;[1] Stats from Ohloh http://www.ohloh.net/p/hippoecm&lt;br /&gt;
&lt;/p&gt;</description>
	<pubDate>Fri, 30 Jan 2009 12:23:29 +0000</pubDate>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): Let's talk about documentation</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-8287853822199113840</guid>
	<link>http://dev.nielsvk.com/2009/01/let-talk-about-documentation.html</link>
	<description>I noticed the &lt;a href=&quot;http://eu.apachecon.com/c/aceu2009/schedule/grid&quot;&gt;schedule&lt;/a&gt; for ApacheCon EU 2009 is up on their &lt;a href=&quot;http://eu.apachecon.com/c/aceu2009/&quot;&gt;website&lt;/a&gt;, and it looks like &lt;a href=&quot;http://eu.apachecon.com/c/aceu2009/sessions/162&quot;&gt;my talk on documentation&lt;/a&gt; has been accepted! Documentation is traditionally not the strongest selling point of open source software. I am full of ideas on why this is, and how it can be improved. I even think it is not that hard, and that open source projects have a benefit over closed source software vendors in this area. We just need to see this benefit and make use of it!&lt;br /&gt;&lt;br /&gt;If you are curious about my ideas, the session is scheduled for Thursday, March 26, at 2 pm. I hope to see you all in Amsterdam!&lt;br /&gt;&lt;br /&gt;For completeness, here are all the details:&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;Documentation: get it right!&lt;/strong&gt;&lt;br /&gt;Niels van Kampenhout&lt;br /&gt;Thu, 26 March 2009 14:00&lt;/blockquote&gt;&lt;blockquote&gt;&lt;i&gt;Good documentation is vital for the health of any open source project, yet the challenges that this fact presents are not always overcome. Let's face it: open source software has a reputation for poorly written and organized documentation. What causes this reputation? Is it really that bad? Is it really that difficult? How can we do better? And why do we need documentation anyway, can't you just look at the code?! This talk explores an often overlooked aspect of open source software development. It explains what makes documentation good documentation, and how it can benefit a project. It shows that, with a bit of common sense and clever use of resources, it's actually not that hard to produce useful documentation. A rough guide to getting your documentation right, while strengthening your community at the same time.&lt;/i&gt;&lt;/blockquote&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-8287853822199113840?l=dev.nielsvk.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 14 Jan 2009 21:31:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Niels van Kampenhout (Hippo): Using JCR-Explorer with Hippo CMS 7</title>
	<guid>tag:blogger.com,1999:blog-49500217511749617.post-7692433904633187407</guid>
	<link>http://dev.nielsvk.com/2009/01/using-jcr-explorer-with-hippo-cms-7.html</link>
	<description>&lt;a href=&quot;http://blogs.hippo.nl/niels/JCR-Explorer.html&quot;&gt;&lt;img alt=&quot;JCR-Explorer-thumbnail.png&quot; src=&quot;http://blogs.hippo.nl/niels/JCR-Explorer-thumbnail.png&quot; width=&quot;200&quot; align=&quot;right&quot; height=&quot;120&quot; /&gt;&lt;/a&gt;Following &lt;a href=&quot;http://grep.codeconsult.ch/2009/01/06/using-the-jcr-explorer-with-sling/&quot;&gt;Bertrand's useful blog post&lt;/a&gt;, here's how to configure &lt;a href=&quot;http://www.jcr-explorer.org/&quot;&gt;JCR-Explorer&lt;/a&gt; in Tomcat, for use with Hippo Repository.&lt;br /&gt;&lt;br /&gt;I used Tomcat 6.0.18, Hippo CMS 7 v2.02.01, and JCR-Explorer 0.9.5.&lt;br /&gt;&lt;br /&gt;Start with a clean Tomcat installation, and add the following jars to the &lt;code&gt;lib&lt;/code&gt; directory:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://mirrors.ibiblio.org/pub/mirrors/maven2/javax/jcr/jcr/1.0/jcr-1.0.jar&quot;&gt;jcr-1.0.jar&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/jackrabbit/jackrabbit-api/1.5.0/jackrabbit-api-1.5.0.jar&quot;&gt;jackrabbit-api-1.5.0.jar&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/jackrabbit/jackrabbit-jcr-rmi/1.5.0/jackrabbit-jcr-rmi-1.5.0.jar&quot;&gt;jackrabbit-jcr-rmi-1.5.0.jar&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://repository.hippocms.org/maven2/org/hippoecm/hippo-ecm-repository-connector/2.02.01/hippo-ecm-repository-connector-2.02.01.jar&quot;&gt;hippo-ecm-repository-connector-2.02.01.jar&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://mirrors.ibiblio.org/pub/mirrors/maven/geronimo-spec/jars/geronimo-spec-jta-1.0-M1.jar&quot;&gt;geronimo-spec-jta-1.0-M1.jar&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Download the &lt;a href=&quot;http://repository.hippocms.org/maven2/org/hippoecm/hippo-ecm-quickstart-war/2.02.01/hippo-ecm-quickstart-war-2.02.01.war&quot;&gt;Hippo CMS 7 WAR&lt;/a&gt;, rename it &lt;code&gt;cms.war&lt;/code&gt;, and copy it to Tomcat's &lt;code&gt;webapp&lt;/code&gt; dir.&lt;br /&gt;&lt;br /&gt;Add to Tomcat's &lt;code&gt;conf/server.xml&lt;/code&gt;, inside &lt;code&gt;&amp;lt;GlobalNamingResources&amp;gt;&lt;/code&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;Resource name=&quot;jcr/globalRepository&quot;&lt;br /&gt;auth=&quot;Container&quot;&lt;br /&gt;type=&quot;javax.jcr.Repository&quot;&lt;br /&gt;factory=&quot;org.apache.jackrabbit.rmi.client.ClientRepositoryFactory&quot;&lt;br /&gt;url=&quot;rmi://127.0.0.1:1099/hipporepository&quot;/&amp;gt;&lt;br /&gt;&lt;/pre&gt;Add to &lt;code&gt;conf/context.xml&lt;/code&gt;, inside &lt;code&gt;&amp;lt;Context&amp;gt;&lt;/code&gt;&gt;:&lt;br /&gt;&lt;pre&gt;&amp;lt;ResourceLink name=&quot;jcr/repository&quot;&lt;br /&gt;global=&quot;jcr/globalRepository&quot;&lt;br /&gt;type=&quot;javax.jcr.Repository&quot;/&amp;gt;&lt;br /&gt;&lt;/pre&gt;Download &lt;a href=&quot;http://www.jcr-explorer.org/downloads.html&quot;&gt;JCR-Explorer&lt;/a&gt; and copy the &lt;code&gt;jcr-explorer.war&lt;/code&gt; file to the Tomcat &lt;code&gt;webapps&lt;/code&gt; folder. Start Tomcat, stop it (so that the webapp is expanded) and add this at the end of &lt;code&gt;webapps/jcr-explorer/WEB-INF/web.xml&lt;code&gt;, inside &lt;code&gt;&amp;lt;web-app&amp;gt;&lt;/code&gt;:&lt;br /&gt;&lt;/code&gt;&lt;/code&gt;&lt;pre&gt;&amp;lt;ResourceLink name=&quot;jcr/repository&quot;&lt;br /&gt;global=&quot;jcr/globalRepository&quot;&lt;br /&gt;type=&quot;javax.jcr.Repository&quot;/&amp;gt;&lt;br /&gt;&lt;/pre&gt;Now start up Tomcat and load the JCR-Explorer login page at &lt;code&gt;http://localhost:8080/jcr-explorer/login.jsf&lt;/code&gt;. Use &lt;code&gt;java:comp/env/jcr/repository&lt;/code&gt; as JNDI name, and login using username &lt;code&gt;admin&lt;/code&gt; and password &lt;code&gt;admin&lt;/code&gt;. You will now see a JCR-Explorer screen showing the contents of Hippo Repository!&lt;br /&gt;&lt;br /&gt;Credits go mostly to &lt;a href=&quot;http://grep.codeconsult.ch/&quot;&gt;Betrand&lt;/a&gt; of course.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/49500217511749617-7692433904633187407?l=dev.nielsvk.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 08 Jan 2009 18:49:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Niels)</dc:creator>
</item>
<item>
	<title>Jeroen Verberg (Hippo): Clinton and me</title>
	<guid>http://blogs.hippo.nl/jverberg/2008/12/clinton_and_me.html</guid>
	<link>http://blogs.hippo.nl/jverberg/2008/12/clinton_and_me.html</link>
	<description>&lt;p&gt;Today BNR (Business News Radio) had exclusive interview with former US president Bill Clinton. Clinton had interesting story about a recent small scale project in Ethiopia bringing light with solar power</description>
	<pubDate>Mon, 22 Dec 2008 15:11:00 +0000</pubDate>
</item>
<item>
	<title>Jasha Joachimsthal (Hippo): Hippo CMS v6.05.05 released!</title>
	<guid>tag:blogger.com,1999:blog-5942185880332728298.post-8055651172330897443</guid>
	<link>http://blog.jasha.eu/2008/12/hippo-cms-v60505-released.html</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.onehippo.com&quot;&gt;Hippo&lt;/a&gt; is proud to announce the latest release of &lt;a href=&quot;http://www.hippocms.org/display/CMS/Hippo+CMS+v6.0x+Documentation&quot;&gt;Hippo CMS 6&lt;/a&gt;. This release contains many small improvements and fixes. Some highlights of this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt; Faster loading of the configuration&lt;/li&gt;
&lt;li&gt; Search on document types&lt;/li&gt;
&lt;li&gt; Publish properties of folders&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the full news item see the &lt;a href=&quot;http://www.hippocms.org/display/CMS/2008/12/18/Hippo+CMS+v6.05.05+released!&quot;&gt;Hippo CMS 6.05.05 released!&lt;/a&gt; on www.hippocms.org.&lt;/p&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;Originally posted on &lt;a href=&quot;http://blog.jasha.eu&quot;&gt;Jasha's blog&lt;/a&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/5942185880332728298-8055651172330897443?l=blog.jasha.eu&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 18 Dec 2008 10:07:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jasha Joachimsthal)</dc:creator>
</item>
<item>
	<title>Jeroen Verberg (Hippo): Government support</title>
	<guid>http://blogs.hippo.nl/jverberg/2008/10/government_support.html</guid>
	<link>http://blogs.hippo.nl/jverberg/2008/10/government_support.html</link>
	<description>&lt;p&gt;Regarding SPAM I thought nothing could really surprise me anymore. According to our filter statistics it blocks about 100 messages a day for me. But yesterday one slipped through from the European Commission.&lt;/p&gt;</description>
	<pubDate>Thu, 09 Oct 2008 15:21:17 +0000</pubDate>
</item>
<item>
	<title>Jeroen Reijn (Hippo): 5 years at Hippo and 5 years of open source</title>
	<guid>tag:blogger.com,1999:blog-2962867622850517744.post-1669257055881473073</guid>
	<link>http://blog.jeroenreijn.com/2008/10/5-years-at-hippo-and-5-years-of-open.html</link>
	<description>I've been thinking about this post for a while, because I wasn't really sure what to write about my past 5 years. So much has happened and there is so much to mention, but that would mean this would be a longggggg post. I'll just create a (short) summary of my entire story for now.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My main reason to start at Hippo 5 years ago was because I wanted to do something with Java and the web. Hippo provided both and offered a great learning environment at the same time with all the open source products they used in their software.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;While doing my daily work at Hippo, I learned a lot about &lt;a href=&quot;http://cocoon.apache.org&quot;&gt;Apache Cocoon&lt;/a&gt;, an open source framework, which was one of the core open source products used within Hippo driven websites. Before that, I wasn't really aware that Apache was a lot more then &lt;a href=&quot;http://tomcat.apache.org&quot;&gt;Tomcat&lt;/a&gt; and the &lt;a href=&quot;http://httpd.apache.org/&quot;&gt;HTTP&lt;/a&gt; server. While getting more involved within the Cocoon community I was up for my first real open source experience.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href=&quot;http://wiki.apache.org/cocoon/GetTogetherAttending&quot;&gt;Cocoon GetTogether 2003&lt;/a&gt; was a place were I met all the people behind the names that I had seen on the Cocoon mailinglist. The GT2003 was held in Ghent (Belgium) and it was my first of the many to come trips related to working with open source projects at Hippo. Later on, I was able to travel to Dublin and Rome for Cocoon/Apache related conferences with the &lt;a href=&quot;http://www.apachecon.com&quot;&gt;ApacheCon&lt;/a&gt; in Amsterdam 2007 as a highlight. In Amsterdam &lt;a href=&quot;http://blogs.hippo.nl/jasha&quot;&gt;Jasha&lt;/a&gt; and I gave a presentation about Cocoon. I was just elected as an official Cocoon committer a month or so before that and tried to give my share of support to the Cocoon community that had given me so much those past years.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cocoon wasn't the only Apache open source project I was going to end up using. So far &lt;a href=&quot;http://lucene.apache.org&quot;&gt;Lucene&lt;/a&gt;, &lt;a href=&quot;http://myfaces.apache.org&quot;&gt;MyFaces&lt;/a&gt;, &lt;a href=&quot;http://jakarta.apache.org/slide&quot;&gt;Slide&lt;/a&gt;, &lt;a href=&quot;http://jackrabbit.apache.org&quot;&gt;Jackrabbit&lt;/a&gt; and &lt;a href=&quot;http://wicket.apache.org&quot;&gt;Wicket&lt;/a&gt; have also been part of my daily work. Then of course we also have our own open source projects, like &lt;a href=&quot;http://www.hippocms.org&quot;&gt;Hippo CMS&lt;/a&gt; and Hippo Repository. I think it was a great move to make both products open source, because it helped the products to become more mature and it allowed other developers to learn much more about the product then if it would be a closed source project.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From the company point of view, it was great to see Hippo grow from the small (only 6 people when I started) to the +/- 40 people that I'm working with now. I think &lt;a href=&quot;http://blogs.hippo.nl/arje/&quot;&gt;Arje&lt;/a&gt;, Tjeerd and &lt;a href=&quot;http://blogs.hippo.nl/jverberg/&quot;&gt;Jeroen&lt;/a&gt; are doing a great job with this. I've learned so much from them and the other Hippos around me that the current environment is very inspiring. Also the projects that we're doing now with Hippo are getting bigger and bigger. That's one of the reasons why we're currently working very hard on a first final release of Hippo &lt;a href=&quot;http://en.wikipedia.org/wiki/Enterprise_content_management&quot;&gt;ECM&lt;/a&gt; platform, which is coming up very soon.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Looking at my self, I can say I also grew from being a developer working on small websites to  developing large applications/websites, guiding partners with their Hippo implementations, doing some consultancy and giving training sessions about open source Hippo software or on the use of Apache Cocoon.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm looking forward to what the future will bring us with Hippo ECM coming up and our goal to become one of the bigger players in the ECM market. I guess in 5 more years I can tell you the answer to that question.&lt;br /&gt;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2962867622850517744-1669257055881473073?l=blog.jeroenreijn.com&quot; /&gt;&lt;/div&gt;</description>
	<pubDate>Thu, 09 Oct 2008 09:45:00 +0000</pubDate>
	<dc:creator>noreply@blogger.com (Jeroen Reijn)</dc:creator>
</item>
<item>
	<title>Arje Cahn (Hippo): Announcing Hippo ECM and Hippo CMS 7</title>
	<guid>http://blogs.hippo.nl/arje/2008/09/announcing_hippo_ecm_and_hippo.html</guid>
	<link>http://blogs.hippo.nl/arje/2008/09/announcing_hippo_ecm_and_hippo.html</link>
	<description>&lt;p&gt;Lots has happened.&lt;/p&gt;

&lt;p&gt;And we're nearly there. It took us &lt;a href=&quot;http://blogs.hippo.nl/arje/2007/09/status_update_defining_facets.html&quot;&gt;more than a year&lt;/a&gt; of &lt;a href=&quot;http://lists.hippo.nl/pipermail/hipporepos-dev/&quot;&gt;heavy development&lt;/a&gt;, but it feels *so good* to play around with this cute little gem! It just feels right. Here's a bit of a sneak preview:&lt;/p&gt;

&lt;div id=&quot;media&quot;&gt;
            
                
                
                
                
                
                
                
                
            
        &lt;/div&gt;

&lt;p&gt;In the meantime, Dennis Byron of &lt;a href=&quot;http://www.itbusinessedge.com&quot;&gt;IT Business Edge&lt;/a&gt; wrote a really &lt;a href=&quot;http://www.itbusinessedge.com/blogs/den/?p=149&quot;&gt;nice blogpost&lt;/a&gt; about how &lt;a href=&quot;http://www.onehippo.com&quot;&gt;Hippo&lt;/a&gt; &quot;Helps Get Portal Enterprise Software Right&quot;. As he says, &quot;the characteristic of using CMS to do multiple things multiple ways is the key to the Hippo approach&quot; - and he's &lt;strong&gt;so&lt;/strong&gt; spot on. Hold your breath for v7.&lt;/p&gt;

&lt;p&gt;This came in just days after something else that I think I'll simply interpret as a big compliment.&lt;/p&gt;

&lt;p&gt;As they say, &lt;a href=&quot;http://www.bluenog.com/site/products/content/website/products/bluenogcms/bluenogcms.xml&quot;&gt;imitation&lt;/a&gt; is the &lt;a href=&quot;http://www.hippocms.org/display/CMS/Features&quot;&gt;greatest&lt;/a&gt; form of &lt;a href=&quot;http://blog.contenthere.net/2008/09/bluenog-subtly-forks-hippo.html&quot;&gt;flattery&lt;/a&gt;. Draw your own conclusions. Apparently, there are more people in the world that really like Hippo :-).&lt;/p&gt;

&lt;p&gt;Expect more from me in the blogosphere the upcoming weeks as we reveal the new kid on the block in open source ECM.&lt;br /&gt;
&lt;/p&gt;</description>
	<pubDate>Mon, 22 Sep 2008 22:38:50 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Congratulations, XML</title>
	<guid>http://blogs.hippo.nl/arje/2008/02/congratulations_xml.html</guid>
	<link>http://blogs.hippo.nl/arje/2008/02/congratulations_xml.html</link>
	<description>&lt;p&gt;Last week, XML turned 10. Hurray! &lt;br /&gt;
Incredible that it's just 10 years ago.&lt;/p&gt;

&lt;p&gt;Crunching my memory, I think the first time I came across XML was somewhere in the end of 1998, when I was working on a Microsoft technology based CMS. Since people have been harassing me with this horrendous</description>
	<pubDate>Fri, 15 Feb 2008 10:51:32 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Fresh new hearing</title>
	<guid>http://blogs.hippo.nl/arje/2008/02/fresh_new_hearing.html</guid>
	<link>http://blogs.hippo.nl/arje/2008/02/fresh_new_hearing.html</link>
	<description>&lt;p&gt;They kicked me out of hospital last week.&lt;/p&gt;

&lt;p&gt;Exactly ten years after what was supposed to be my last operation, my left ear started troubling me again. I had no other choice than to undergo some major surgery to stabilize the inflammation and to hopefully get some of my old hearing back.&lt;/p&gt;

&lt;p&gt;Not a lot of people actually know this, but I'm almost deaf on one ear. Sitting on my left side in a crowded bar is a good guarantee that I won't be able to have any conversation with you. That's why you can see me switching chairs all the time for apparently no reason - it's not because I'm superstitious or something - I just want to be able to hear people.&lt;/p&gt;

&lt;p&gt;But now this is all supposed to get soo much better...!&lt;/p&gt;

&lt;p&gt;When I woke up from anaesthetics, the doctors (all three of them) were jumping up and down next to my bed like little children. Surgery went much quicker then they had expected, and they had had so much fun playing around with chunks of Titanium in my head, neurological sensors to monitor my facial nerves and so on. Oh big joy. But I can tell you - nothing feels better than seeing happy doctors when you wake up after long hours of surgery!&lt;/p&gt;

&lt;p&gt;I'm taking it easy now - trying to recover and let the new ear heal. So bear with me if I'm not responding to your email quick enough.&lt;/p&gt;

&lt;p&gt;For those of you who hungry for bloodshed and gore pictures - &lt;a href=&quot;http://blogs.hippo.nl/arje/2008/02/07/IMG_7131-sm.html&quot;&gt;here's&lt;/a&gt; what my head looked like last week :-)&lt;/p&gt;

&lt;p&gt;Enjoy,&lt;/p&gt;

&lt;p&gt;Arjé&lt;/p&gt;</description>
	<pubDate>Thu, 07 Feb 2008 16:01:10 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Information patterns: Classification follows context</title>
	<guid>http://blogs.hippo.nl/arje/2007/12/classification_follows_context.html</guid>
	<link>http://blogs.hippo.nl/arje/2007/12/classification_follows_context.html</link>
	<description>&lt;p&gt;I was at the &lt;a href=&quot;http://www.artis.nl/index.php?home=true&quot;&gt;Amsterdam Zoo&lt;/a&gt;, a place that I go to quite frequently to wander around and feel simple and taken care of amidst a bunch of animals sitting properly organized behind their name tags. No surprises in this place. A zoo breathes a fath</description>
	<pubDate>Mon, 31 Dec 2007 08:36:45 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Apache Wicket Meetup</title>
	<guid>http://blogs.hippo.nl/arje/2007/11/apache_wicket_meetup.html</guid>
	<link>http://blogs.hippo.nl/arje/2007/11/apache_wicket_meetup.html</link>
	<description>&lt;p&gt;Small-scale meetups are good for attracting new people to the Apache community. So after the 6-years-in-a-row (and still running!) &lt;a href=&quot;http://www.cocoongt.org&quot;&gt;Cocoon GetTogether&lt;/a&gt; series, we're now running a brand new meetup for the Apache Wicket community. I kind of promised that I would</description>
	<pubDate>Mon, 19 Nov 2007 22:13:50 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Investing in open source</title>
	<guid>http://blogs.hippo.nl/arje/2007/10/investing_in_open_source.html</guid>
	<link>http://blogs.hippo.nl/arje/2007/10/investing_in_open_source.html</link>
	<description>&lt;p&gt;I felt sad for Lars - one of my &lt;a href=&quot;http://cocoon.apache.org&quot;&gt;Cocoon&lt;/a&gt; buddies - when he told me that &lt;a href=&quot;http://www.mindquarry.com&quot;&gt;his company&lt;/a&gt; &lt;a href=&quot;http://weblogs.goshaky.com/weblogs/lars/entry/continuing_mindquarry&quot;&gt;lost its primary investor&lt;/a&gt;. They're now forced to close</description>
	<pubDate>Thu, 11 Oct 2007 16:01:49 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Cocoon GetTogether 2007: When in Rome....</title>
	<guid>http://blogs.hippo.nl/arje/2007/09/cocoon_gettogether_2007_when_i.html</guid>
	<link>http://blogs.hippo.nl/arje/2007/09/cocoon_gettogether_2007_when_i.html</link>
	<description>&lt;p&gt;After two years of &lt;a href=&quot;http://www.cocoongt.org/archive/2005/index.html&quot;&gt;backing&lt;/a&gt; the Cocoon &lt;a href=&quot;http://www.cocoongt.org/archive/2006/index.html&quot;&gt;GetTogether&lt;/a&gt; in Amsterdam, that cold rainy place in Northern Europe, I'm more than happy to let &lt;a href=&quot;http://blogs.hippo.nl/arje/2006/09/behind_the_scenes_of_the_cocoo.html&quot;&gt;Lady Coco&lt;/a&gt;  go to her new &lt;a href=&quot;http://www.sourcesense.com&quot;&gt;foster&lt;/a&gt; &lt;a href=&quot;http://www.rabellino.it/blog/&quot;&gt;parents&lt;/a&gt;. The Cocoon community is moving back to its Mediterranean roots: Rome!&lt;/p&gt;

&lt;p&gt;For the sixth time (it's becoming a serious tradition by now) I and the other &lt;a href=&quot;http://www.hippo.nl&quot;&gt;Hippo brains&lt;/a&gt; will be there. And even if you have only the slightest interest in &lt;a href=&quot;http://cocoon.apache.org&quot;&gt;Apache Cocoon&lt;/a&gt;, you should be there, too!&lt;/p&gt;

&lt;p&gt;Since I like the &lt;a href=&quot;http://www.cocoongt.org&quot;&gt;Cocoon GT&lt;/a&gt; so much, and want everyone to come on over, I'm hereby adding *&lt;b&gt;all three&lt;/b&gt;* Cocoon GetTogether banners to my blog. So here you go.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;http://www.cocoongt.org/&quot;&gt;&lt;img border=&quot;1&quot; src=&quot;http://www.cocoongt.org/images/cocoon_gt_2007_125x125.jpg&quot; alt=&quot;Cocoon GetTogether 2007&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;http://www.cocoongt.org/&quot;&gt;&lt;img border=&quot;1&quot; src=&quot;http://www.cocoongt.org/images/cocoon_gt_2007_235x60.jpg&quot; alt=&quot;Cocoon GetTogether 2007&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;a href=&quot;http://www.cocoongt.org/&quot;&gt;&lt;img border=&quot;1&quot; src=&quot;http://www.cocoongt.org/images/cocoon_gt_2007_470x60.jpg&quot; alt=&quot;Cocoon GetTogether 2007&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;;-)&lt;/p&gt;

&lt;p&gt;See you all in Rome!&lt;/p&gt;

&lt;p&gt;UPDATE: Obviously, the real reason for &lt;a href=&quot;http://www.hippo.nl&quot;&gt;us&lt;/a&gt; coming to Italy is that some genius has translated &lt;a href=&quot;http://www.hippocms.org&quot;&gt;Hippo CMS&lt;/a&gt; into &lt;a href=&quot;http://blogs.hippo.nl/reijn/2007/09/hippo_cms_in_italian.html&quot;&gt;Italian&lt;/a&gt; now. Nice job,  Marco :-)&lt;/p&gt;</description>
	<pubDate>Fri, 14 Sep 2007 14:01:15 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Developers update: Defining facets in Hippo Repository 2.0</title>
	<guid>http://blogs.hippo.nl/arje/2007/09/status_update_defining_facets.html</guid>
	<link>http://blogs.hippo.nl/arje/2007/09/status_update_defining_facets.html</link>
	<description>&lt;p&gt;By (not) organizing the hierarchy of the content repository upfront, but by allowing it to grow dynamically based on meta data, I hope we can adhere to &lt;a href=&quot;http://wiki.apache.org/jackrabbit/DavidsModel#head-7e1bea156cb9b0a91a9cac70cb5bea80f45372b8&quot;&gt;David Neuscheler's Rule #1&lt;/a&gt;, which was i</description>
	<pubDate>Tue, 11 Sep 2007 09:30:14 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Hippo is hiring... Java pros!</title>
	<guid>http://blogs.hippo.nl/arje/2007/08/hippo_is_hiring.html</guid>
	<link>http://blogs.hippo.nl/arje/2007/08/hippo_is_hiring.html</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.hippo.nl/en/home&quot;&gt;Hippo&lt;/a&gt; is looking for kick ass Java developers to join our product development team. If you happen to know anyone that would fit the profile, I'd really appreciate it if you could get us in touch.. &lt;/p&gt;

&lt;p&gt;BTW, we're also looking for consultants, web developers and open source community builders.. In short, we need lots of people :-)&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Job Title: Senior Java Developers (product development)&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;Hippo is looking for experienced Java programmers who would like to work in a dynamic and open environment that emphasizes individual initiative and is deeply involved in the Apache open source community. &lt;/p&gt;

&lt;p&gt;We're expanding our Java development teams, and are looking for developers to work on our CMS, Portal and Repository products. &lt;/p&gt;

&lt;p&gt;Profile: &lt;/p&gt;

&lt;p&gt;* Academic qualification in IT &lt;br /&gt;
* Relevant work experience &lt;br /&gt;
* Good knowledge of Java &lt;br /&gt;
* Experience in developing server applications &lt;br /&gt;
* Affinity with open source, Apache in particular &lt;/p&gt;

&lt;p&gt;Knowledge of the following items is desirable: &lt;/p&gt;

&lt;p&gt;* Apache Cocoon, Jackrabbit or Jetspeed &lt;br /&gt;
* Content management systems &lt;br /&gt;
* Portal development &lt;/p&gt;

&lt;p&gt;Hippo is the developer of the open source enterprise content management system Hippo ECM, a native XML content management platform, and Hippo Portal, an open source portal container. &lt;/p&gt;

&lt;p&gt;The level of knowledge within Hippo is high, oriented specifically towards XML and Java. Staff are encouraged to investigate new technologies. In particular, emerging technologies from within the open source community and the W3C are followed closely. Where possible, Hippo participates in open source projects. Researching and developing new applications before the market is even demanding them, is a challenge we face every day. &lt;/p&gt;

&lt;p&gt;Hippo develops software for a market that is changing on a daily basis. It is therefore important that we respond quickly to new developments, but all the while keeping an eye on the continuity of the existing products. As well as creativity, all staff are therefore expected to have a well-developed feeling for their own responsibility. &lt;/p&gt;

&lt;p&gt;The company’s distinguishing characteristics are the short communication lines, a customer-friendly attitude and the use of the newest technologies, with personal creativity and an eye for detail being highly valued. &lt;/p&gt;

&lt;p&gt;For more information, visit our website: &lt;br /&gt;
* &lt;a href=&quot;http://www.hippo.nl&quot;&gt;www.hippo.nl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or visit our community site: &lt;br /&gt;
* &lt;a href=&quot;http://www.hippocms.org&quot;&gt;www.hippocms.org&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Got questions? Don't hesitate to mail me directly at arje (@) apache dot org. &lt;/p&gt;</description>
	<pubDate>Fri, 24 Aug 2007 16:01:40 +0000</pubDate>
</item>
<item>
	<title>Arje Cahn (Hippo): Hippo ECM platform: a pluggable, scalable, Java content management platform. Part II.</title>
	<guid>http://blogs.hippo.nl/arje/2007/08/hippo_ecm_platform_a_pluggable.html</guid>
	<link>http://blogs.hippo.nl/arje/2007/08/hippo_ecm_platform_a_pluggable.html</link>
	<description>&lt;p&gt;Yesterday we discussed our development schedule for the upcoming half year. In the next couple of months we will be working on Hippo ECM release 1.0, which contains Hippo CMS 7 and Hippo Repository version 2. Also included in this package will be Hippo Portal release 1 and Hippo DMS release 1. The result will be a complet