Hy everyone,
I struggle to create CMIS objects using the client API (not the bindings API)
with the FileShare server.
I thought CMIS FileShare should have worked out of the box without any complex
configuration, but it does not seem to be the case.
I managed to deploy the FileShare server into Tomcat:
1 [localhost-startStop-1] INFO
org.apache.chemistry.opencmis.fileshare.FileShareServiceFactory – Added login
'test'.
3 [localhost-startStop-1] INFO
org.apache.chemistry.opencmis.fileshare.FileShareServiceFactory – Added login
'cmisuser'.
4 [localhost-startStop-1] INFO
org.apache.chemistry.opencmis.fileshare.FileShareServiceFactory – Added login
'reader'.
69 [localhost-startStop-1] INFO
org.apache.chemistry.opencmis.fileshare.FileShareServiceFactory – Added
repository 'test': /home/pgillet/test
1002 [localhost-startStop-1] INFO
org.apache.chemistry.opencmis.fileshare.TypeManager – Added type
'myTestDocumentType'.
1003 [localhost-startStop-1] INFO
org.apache.chemistry.opencmis.server.impl.CmisRepositoryContextListener –
Initialized Services Factory:
org.apache.chemistry.opencmis.fileshare.FileShareServiceFactory
I configured my repository.properties file to use the type definitions in the
example-type.xml file (this file is originally embedded in the WAR archive). I
do not even know if it useful or not.
Then, I try to run the following test:
public static void main(String[] args) {
// default factory implementation
SessionFactory factory = SessionFactoryImpl.newInstance();
Map<String, String> params = new HashMap<String, String>();
// user credentials
params.put(SessionParameter.USER, "test");
params.put(SessionParameter.PASSWORD, "test");
// connection settings
params.put(SessionParameter.ATOMPUB_URL,
"http://localhost:8080/glue-content/atom");
params.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB.value());
// params.put(SessionParameter.REPOSITORY_ID, "test");
// create session
List<Repository> repositories = factory.getRepositories(params);
for (Repository r : repositories) {
System.out.println("Found repository: " + r.getName());
}
Repository repository = repositories.get(0);
Session session = repository.createSession();
System.out.println("Got a connection to repository: "
+ repository.getName() + ", with id: "
+ repository.getId());
// Access to root folder
Folder root = session.getRootFolder(); // line 65: Here is the problem !
...
Everything works fine until the last instruction. I have the following output:
11:17:02.583 [main] DEBUG o.a.c.o.c.b.s.atompub.CmisAtomPubSpi - Initializing
AtomPub SPI...
11:17:05.474 [main] DEBUG o.a.c.o.c.b.s.h.DefaultHttpInvoker - GET
http://localhost:8080/glue-content/atom
Found repository: test
11:17:08.153 [main] DEBUG o.a.c.o.c.b.s.atompub.CmisAtomPubSpi - Initializing
AtomPub SPI...
11:17:08.154 [main] DEBUG o.a.c.o.c.b.s.h.DefaultHttpInvoker - GET
http://localhost:8080/glue-content/atom?repositoryId=test
Got a connection to repository: test, with id: test
11:17:08.419 [main] DEBUG o.a.c.o.c.b.s.h.DefaultHttpInvoker - GET
http://localhost:8080/glue-content/atom/test/id?id=%40root%40&filter=&includeAllowableActions=true&includeACL=false&includePolicyIds=false&includeRelationships=none&renditionFilter=cmis%3Anone
11:17:08.637 [main] DEBUG o.a.c.o.c.b.s.h.DefaultHttpInvoker - GET
http://localhost:8080/glue-content/atom/test/type?id=cmis%3Afolder
Exception in thread "main" java.lang.IllegalArgumentException: Object type must
have property definitions!
at
org.apache.chemistry.opencmis.client.runtime.AbstractCmisObject.initialize(AbstractCmisObject.java:95)
at
org.apache.chemistry.opencmis.client.runtime.FolderImpl.<init>(FolderImpl.java:68)
at
org.apache.chemistry.opencmis.client.runtime.repository.ObjectFactoryImpl.convertObject(ObjectFactoryImpl.java:572)
at
org.apache.chemistry.opencmis.client.runtime.SessionImpl.getObject(SessionImpl.java:414)
at
org.apache.chemistry.opencmis.client.runtime.SessionImpl.getRootFolder(SessionImpl.java:489)
at
org.apache.chemistry.opencmis.client.runtime.SessionImpl.getRootFolder(SessionImpl.java:483)
at com.glue.feed.ContentTest.main(ContentTest.java:65)
I guess that I am missing some configuration step somewhere! I tried to google
the error message, but it seems that no one is experiencing the problem.
Thank you very much for you help,
Pascal GILLET