Dec 04

As promised, just a brief heads up on the quite few changes ongoing in the Maven Alfresco Lifecycle project which is now supported by the Alfresco Community Maven repository.  Also I managed to pull out a new version of the Cmis Maven toolkit against the new repository.

Proceeding with order, first of all, I released today a new version (1.1.0) of the maven-alfresco-lifecycle package with the main interesting news (full changes report):

The long Maven Alfresco marathon was then completed by the release of version 1.0-beta-2 of the CMIS 1.0cd04 Maven Toolkit, pointing to the new Maven repository. No actual functionality was modified and it keeps on working happily (by default against http://cmis.alfresco.com) using the latest snapshots from the Chemistry AtomPub TCK trunk. I updated the documentation on the Alfresco wiki as well.

I hope this really helps as it’s just *not that* funny to go over those growing many documentation files to change repos again, so any edit or error you guys can spot in the docs === a beer on me when you seem me :)

Though I first have to apologize to the end users of this build, promising this is the last time this project moves hosting.
Now everything is consolidated, content as artifacts, as in the pure ECM spirit. And with a promising Share archetype to work and customize it productively.

Eager to hear your feedback (curious about the Share archetype), and especially at my Tech Talk on Maven and Alfresco

…don’t be shy :)

Nov 10

Today is a shiny day in my humble open source geek existence: after about 9 months after having been awarded the Apache Chemistry committership, I finally did my first ASF code commit.
About the slowest ever…

When tweeting about it, I go this interesting consideration by my friend and ex-colleague Mario :

@mindthegabz Congratulations! 9 months for a commit is like a childbirth…

While I tend to agree on the quite same importance of  having a kid and doing an Apache Commit :p ,
does this also imply I should start seriously thinking about a larger family? :)

Don’t see it mentioned anywhere in the New Committers guide, am I missing something ? :)

Oct 19

CMIS is cool indeed, and especially working on it with Open Source tools like Alfresco, Maven and Chemistry can result in quite a bit of fun.

I’ve been working quite a lot lately on producing some sample and training material for the coming Alfresco meetups (tomorrow I’ll be presenting the CMIS Master class  live from Madrid), and so I decided to mix and match the two things I can do best:

  • Using my beloved Apache Maven
  • Using the Chemistry AtomPub TCK (former Alfresco CMIS TCK) that we contributed to ASF to provide high level access to the CMIS ReST API

This effort, which I’ll probably heavily use in the next days Master Classes and training session, turned out to be quite productive as in a couple of days of work I was able to:

  • develop a Labs framework which wraps Chemistry TCK embedded CMISClient
  • provide an easy CMIS 0.62 application(s) scaffolding platform using a Maven multimodule project
  • produce and release a Maven archetype which is now hosted our partner Sourcesense repositories ( big thanks go to this folks for being always supportive with their Maven maven infrastructure) and can be used as CMIS launchpad / labs / toolkit

Trying it is very easy, due to Maven archetypes power, and you can have the full Labs toolkit downloaded and installed on your by just selecting ‘cmis-master-labs-archetype‘ in the options of the command below:

EDIT

mvn archetype:generate 
-DarchetypeCatalog=http://maven.alfresco.com/nexus/content/repositories/releases/archetype-catalog.xml
mvn archetype:generate 
-DarchetypeCatalog=http://repository.sourcesense.com/nexus/content/repositories/alfresco.public.releases/archetype-catalog.xml

mvn archetype:generate -DarchetypeRepository=http://repository.sourcesense.com/nexus/content/repositories/alfresco.public.snapshots -DarchetypeGroupId=org.alfresco.enablement.codecamps.cmis -DarchetypeArtifactId=cmis-master-labs-archetype -DarchetypeVersion=1.0

This will create a multiproject structure ready for use. You’ll just need to configure (in a single sourced fashion for the whole suite)  the CMIS endpoint properties in the main POM, by editing the following properties:

<!-- SINGLE POINT OF CONFIGURATION FOR CMIS ENDPOINT -->
<properties>
<!-- Configure here the CMIS endopoint For the whole suite -->
<cmisserviceurl>http://192.168.154.128:8080/alfresco/service/api/cmis</cmisserviceurl>
<cmisusername>admin</cmisusername>
<cmispassword>admin</cmispassword>
<cmistracerequests>true</cmistracerequests>
<cmisvalidateatom>true</cmisvalidateatom>
</properties>

All the nice tracing and validation features of the Chemistry TCK are exposed, once that you configured the POM to point to a proper CMIS 0.62 compliant server (e.g. Alfresco, and an Ubuntu Alfresco VM is available here for this purpose). Specifically the toolkit offers 3 Maven submodules

  • cmis-support –> Support JAR which wraps Chemistry TCK CMISClient
  • cmis-query-webapp –> Very basic SpringMVC webapp querying a CMIS repository and showing results/entries
  • cmis-lab-atompub-binding –> Learning lab on how to import data in Alfresco (complete class in the solution folders)

and a lab-solutions folder.

Using it is pretty straighforward. A simple

mvn install

will test the support against the provided configuration, while entering the cmis-query-webapp folder and running

mvn jetty:run-exploded

will result in the (quite ugly) but functional CMIS Query interface you can see below:

CMIS Query Webapp

using a simple three tiered architecture like the one that follows:

CMIS Query Webapp architecture

Lastly entering the lab-atompub-binding folder and running

mvn test

will run the sample JUnit empty test for the data import lab. Solution (real Test class) is to be found in the labs-solutions  folder.

It’s a beginning but I believe it’s a very nice tool to overcome the somehow still steep learning curve around CMIS, so I warmly suggest you start installing the VM and the archetype and play around with it, and even use it as start for your integration/contribution projects. Especially if you are going to attend Alfresco meetups this month. I’ll surely post the Labs slides later this month, so stay posted!

EDIT

The CMIS 1.0 Public Review compliant toolkit (working against Chemistry AtomPub TCK Trunk 1.0) is available on the Sourcesense repository and it’s added to the remote catalo mentioned in the previous command.

As a side note, at the moment this toolkit provide support for CMIS 0.62 while http://cmis.alfresco.com is Alfresco supporting CMIS 0.70: I’m planning to update the archetype (just a mere Maven dependency :) ) to use the HEAD version of Chemistry TCK that is supporting 0.70.

Feedback welcome as usual!

Hope this really helps :)

Aug 03

My first real involvement in Chemistry definitely deserves a first post on the subject ;)

Lately I’ve been involved into refactoring the Alfresco CMIS Test Harness into an external Tck (Test Compatibility Kit) module to contribute to the Apache Chemistry. At the moment it’s mostly focused on the AtomPub part (including an Apache Adbera extension), but being based on Apache Maven standards should be fairly easy to scale out to WebServices binding testing.

This would be this first real contribution from Alfresco to the Chemistry project, where me and David Caruana have the luck of being involved as committers. At the moment the code for the will-be-called chemistry-atompub-tck is still hosted under the Alfresco contrib SVN space as still to be completed, but already offering quite some nice functionalities to test the compatibility of your server to the CMIS 0.6.2 standard.

The code (which was already in Alfresco and kept up to date to the CMIS standard directly by David) is now almost ready for contribution as it’s completely decoupled from Alfresco and uses a standard Maven build process (Junit + Surefire) to run compatibility tests against an existing (and running) CMIS server.

So, running a plain :

mvn test

will run all Junit tests against the specified serviceUrl with specified the username and password, using Maven POM properties as configuration mechanism. Additional configuration can be done in the POM to trace HTTP request/response conversation (useful for debugging purposes), and to configure some behaviors of the HTTP client.

In addition to that, due to the mighty Maven power a small addition to the previous command:

mvn test site:run

will allow you to point to anembedded Jetty server which publishes the test reports and shows errors and exceptions (amongst all the other nice Maven site features).

The idea at the base of this contribution is that this TCK can be used to test virtually any CMIS implementation and Maven profiles provide us a nice way to aggregate the full test fixture and publish the result in a nicely aggregated fashion. In fact, I started defining a profile called ‘alfresco’ which once run with:

mvn test -Palfresco

will configure the TCK to run against an Alfresco provided CMIS reference URL (or to do any Alfresco specific pre-requisite steps, like downloading it, installing a custom model and run it in Jetty for self contained testing).

In the same way I’d like all the other open source vendors involved in Chemistry to maintain their own profile which will serve as community reference for the CMIS readiness of a specific platform. Likewise we could setup ’sharepoint’ or ‘documentum’ profiles to test existing public instances of those CMIS implementors, to always be up to date with their state of the art.

This will, of course, make much more sense once integrated in Chemistry but it’s already fully functional against the CMIS 0.6.2 standard and might be worth a try already. And if you feel to participate to the testing game, why don’t you make a CMIS server instance available and contribute the few lines of POM configuration to the project, filing a nice and easy JIRA issue?

Too much of a salesguy ? :)