For the last month or so, my focus has been to slowly improve Liferay's WebDAV capabilities. WebDAV is an incredibly powerful way of accessing data on the portal, but there is always room for improvement. So, I am blogging to report that there will be some minor improvements in 5.0 (and some bits in 4.4.2). Here are just a few of the little things that we should be seeing in the next major release of Liferay Portal.
Friendlier WebDAV URLs
So, at present, WebDAV URLs look something like this:
http://localhost:8080/tunnel-web/secure/webdav/document_library/3409/5402/dlfolder/
http://localhost:8080/tunnel-web/secure/webdav/journal/3409/5402/Structures/
Now, this may be nice for some people, but there are two fundamental problems: (1) why are there numbers in this path (3409 = companyId and 5402 = community/groupId) and (2) shouldn't the path to the portlet be after the company and group identifiers? Those are great questions, Joe Bloggs! Now, in 5.0, the URLs are more intelligent:
http://localhost:8080/tunnel-web/secure/webdav/liferay.com/joebloggs/document_library/dlfolder/
http://localhost:8080/tunnel-web/secure/webdav/liferay.com/joebloggs/journal/Structures/
Not only that, but you can now also navigate down to:
http://localhost:8080/tunnel-web/secure/webdav/liferay.com/
and see all the communities that the user is allowed to see. Going down to the community level will also allow you to see the different WebDAV storage systems that are available. That required quite a bit of refactoring, so be glad it all works! :)
Image Gallery WebDAV
Another major request by many WebDAV enthusiasts has been the inclusion of the Image Gallery in WebDAV. But, to make them easier to manage from a UI standpoint, I also introduced names for images. So, when you upload an image, you can now give it some intelligable name. This way, when you look at the WebDAV directory, you can see all the files via the names.
And additional feature that was added in the process was making the WebDAV storage system plugable. Meaning, if you have some other portlet or collection of portlets that you want to implement WebDAV for, all you have to do is extend off of the BaseWebDAVStorageImpl class, add it to portal.properties, and *BAM* you have WebDAV.
WebDAV Stopped Working in 4.4.0 and 4.4.1?
So, there has been several people complaining about WebDAV not working in 4.4.0 or 4.4.1. This, I was totally confused about because I ran WebDAV all the time (albeit, running from trunk). So, how could there be a problem? Well, it turns out that there was a bug in the Tomcat version we bundled with 4.4.0 and 4.4.1. According to Tomcat's change log, versions 5.5.24 and 5.5.25 (the one that Liferay 4.4.x is bundled with) had broken JAASRealm. But I thought we weren't using JAAS. Well, we are -- in WebDAV.
Still to Come...
One other major feature that will be added to WebDAV is Class 2 compliance (probably, initially, only with Document Library). This is to allow different clients to be able to lock a resource before updating it. Clients like Mac OS X and Microsoft Office will not allow dynamic editing of resources without the locking capability. This is a pretty significant feature, so we will see if I can get it out by 5.0. I'll keep you posted. :)


