Thursday, October 20, 2011

Liferay Modeshape Hook

Liferay has a really incredible ability to support various implementations and technology vendors. I mean, search through portal-properties for something you'd need to use and you most probably find that Liferay supports it.

As far as ECM is concerned, Liferay Portal disposes of Document Library that has Repository implementations underneath. The default repository, LiferayRepository, is a fullfledged one with versioning, indexing, Liferay specific ACL / permissioning, asset management, workflows, etc. All metadata is persisted in database and only the file and necessary versioning related information are stored either directly into filesystem, jcr repository, as a database blob or amazon S3. Which is for scaling purposes mainly, it allows you to choose the way of document persistence.
     If you wanted to make your own repository implementation that would extensively use JCR specification for instance, because you would need to write/read it to/from by other means than via Document Library or persist various types of metadata that you have extracted from documents, you better consider twice before using Doclib with it - we would be talking about serious duplication, considering that if you want to use Doclib, each document must have its FileEntry entry in database. You would have to be very precise if you wanted to supply Doclib with a repository implementation that would be accessed like that.
    In fact Liferay team mentioned they were going to make differences. I can already see commits like LPS-21374, that seem to be part of the refactoring.

   This Liferay Modeshape Hook is just another scaling alternative to the aforementioned ones. That is to say, it is doing the resulting CRUD of files, which is the last bit in a series of events that precede. JCRStore is executing the CRUD operations. It is JCR 2.0 compliant so that you can swap JCR repository implementations underneath.
   I prefer Modeshape over Jackrabbit due to many reasons. You can take a look by yourself what distinguishes Modeshape. This blog post would be too long if I started to list them. All necessary steps to make it run are described in README.

No comments: