Recherche
Nuxeo propose(ra) une interface CMIS a partir de la version 5.3.1
En attendant la disponibilité de cette version une pré-version est disponible via http://cmis.demo.nuxeo.org/nuxeo/
Le gros avantage de CMIS est que c'est un standard et devrait permettre le développement de nombreuses solution interopérables.
A ce jour il existe peu d'implémentation JAVA de CMIS. Nuxeo est fortement impliqué dans le projet apache Chemistry qui proposent des implémentations client et serveur.
Pour construire ce projet et mettre les jar dans votre dépôt maven il faut faire :
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>fr.univrennes1.testCMIS</groupId> <artifactId>testCMIS</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>testCMIS</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.chemistry</groupId> <artifactId>chemistry-api</artifactId> <version>0.5-SNAPSHOT</version> </dependency> <dependency> <groupId>org.apache.chemistry</groupId> <artifactId>chemistry-commons</artifactId> <version>0.5-SNAPSHOT</version> </dependency> <dependency> <groupId>org.apache.chemistry</groupId> <artifactId>chemistry-atompub</artifactId> <version>0.5-SNAPSHOT</version> </dependency> <dependency> <groupId>org.apache.chemistry</groupId> <artifactId>chemistry-atompub-client</artifactId> <version>0.5-SNAPSHOT</version> </dependency> </dependencies> </project>
package fr.univrennes1.testCMIS;
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.chemistry.CMISObject;
import org.apache.chemistry.Connection;
import org.apache.chemistry.ContentStream;
import org.apache.chemistry.Document;
import org.apache.chemistry.Folder;
import org.apache.chemistry.NameConstraintViolationException;
import org.apache.chemistry.Repository;
import org.apache.chemistry.RepositoryInfo;
import org.apache.chemistry.UpdateConflictException;
import org.apache.chemistry.atompub.client.APPContentManager;
import org.apache.chemistry.impl.simple.SimpleContentStream;
public class Cmis
{
public static void main( String[] args ) throws NameConstraintViolationException, UpdateConflictException, IOException
{
//************* diverses initialisations *************
String url = "http://cmis.demo.nuxeo.org/nuxeo/site/cmis/repository";
String username = "Administrator";
String password = "Administrator";
String path = "/default-domain/workspaces/demo-workspace/testrb";
String DOSSIER1 = "dossier1";
String FICHIER1 = "fichier1";
//Application
APPContentManager cm = new APPContentManager(url);
cm.login(username, password);
//repository
Repository repository = cm.getRepository("default");
RepositoryInfo info = repository.getInfo();
System.out.println("Description : " + info.getDescription());
System.out.println(info.getVendorName() + ", " + info.getProductName() + ", " + info.getProductVersion());
//connexion
Connection connection = repository.getConnection(null);
//racine de travail
Folder root = connection.getFolder(path);
System.out.println("folder = " + root.getName() + ", date création =" + root.getCreationDate());
//************* Suppression de Dossier1 *************
Folder dossier1 = connection.getFolder(path + "/" + DOSSIER1);
if (dossier1 != null) {
for (CMISObject object : dossier1.getChildren()) {
object.delete();
}
dossier1.delete();
System.out.println("Dossier supprimé");
}
//************* création du dossier "Dossier1" *************
Folder newFolder = root.newFolder("cmis:folder");
newFolder.setName(DOSSIER1);
newFolder.save();
System.out.println("Dossier créé");
//************* création du fichier "Fichier1" *************
Document newDocument = newFolder.newDocument("cmis:document");
newDocument.setName(FICHIER1);
newDocument.save();
System.out.println("Fichier créé");
//************* upload du contenu *************
String fic = "metro.pdf";
FileInputStream in = new FileInputStream("/A_GARDER_UN_PEU/nuxeo-dev/workspace/testCMIS/src/main/resources/" + fic);
ContentStream stream = new SimpleContentStream(in, "application/pdf", fic);
newDocument.setContentStream(stream);
newDocument.save();
System.out.println("Fichier chargé");
connection.close();
cm.logout();
}
}