Nuxeo provides a very powerful REST API but, as you might know, handling HTTP requests, headers, and server updates requires some heavy lifting. To make this heavy lifting easier, Nuxeo provides several REST clients for your preferred languages, such as:

We started developing the Java client to work with a specific Nuxeo Server version. For instance, 1.x was for Nuxeo LTS 2015, 2.x was for Nuxeo LTS 2016 and we were planning to release a 3.x version for Nuxeo LTS 2017.

Here at Nuxeo, we always try to make our user’s life easier. Sometimes we see that users delay important upgrades because the process could seem too long and tedious. Keeping that in mind, we reworked the whole Java client for the 3.x version with the goal of making the upgrade process quick and easy.

It’s our pleasure to announce that the Nuxeo Java Client 3.0.0 works with all Nuxeo Servers starting from LTS 2015 and its first Release Candidate (RC1) is available now!

Along with this, we also introduced some great features: - Test to check whether the connection to Nuxeo Server is successful when instantiating a NuxeoClient - Deserializing Document#properties and Document#contextParameters into proper objects - Uploading a blob from an InputStream - Configuration manager endpoint - Configuration isolation between managers

Let’s take a quick look at how to use this client and some of the new features mentioned above:

Step 1: Create a client

NuxeoClient client = new NuxeoClient.Builder().url("http://localhost:8080/nuxeo")
                                              .authentication("Administrator", "Administrator")

Nach diesem Schritt steht uns ein Client zur Verfügung, der dazu in der Lage ist, Anfragen an den Nuxeo-Server zu verarbeiten.
Erstellen wir nun einige Dokumente (wir gehen davon aus, dass der Client mit einem nagelneuen Nuxeo-Server verknüpft ist).

Document aFolder = Document.createWithName("aFolder", "Folder");
Document aFile = Document.createWithName("aFile", "File");

client.repository().createDocumentByPath("/", aFolder);
client.repository().createDocumentByPath("/aFolder", aFile);

Step 2: Fetch aFile document enriched with its breadcrumb

aFile = client.repository().enrichersForDocument("breadcrumb").fetchDocumentByPath("/aFolder/aFile");
// get the breadcrumb from context parameters
Documents breadcrumb = aFile.getContextParameter("breadcrumb");
aFolder = breadcrumb.getDocument(0);
aFile = breadcrumb.getDocument(1);

Here we benefit from configuration isolation and context parameters deserialization. Each time we get a manager from the client, we get a new manager with its own configuration context initialized with the client’s configuration. So in this example, breadcrumb enricher will only be set for the aFile fetch. Furthermore, as breadcrumb is serialized as documents by the Nuxeo Server, the client is able to deserialize it to Documents.

You can find more examples here.

Try it now and don’t forget to give us your feedback. The final release will be made in October. Stay tuned!