Hi Tycho,

This simplest code sample is propably this one:
https://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-fileshare/
It's a smaller and newer version of the Server Development Guide code.

FileBridgeCmisServiceFactory.java and FileBridgeCmisService.java and correspond to AbstractServiceFactory and AbstractCmisService. If you need a staring point, take the files from the link above. If you are using Maven, use the archetype "chemistry-opencmis-server-archetype" to generate an OpenCMIS server stub.

Then follow the CMIS specification and don't use the source code from the link above. There are some bits and pieces that you may want to reuse, but I wouldn't try to refactor the code. Your own clean implementation is better to maintain in the long run.

Use the CMIS Workbench to test your server. After implementing a feature, run the TCK from the Workbench. It will lead you to bugs and compliance issues. It might be a bit frustrating in the beginning to see a lot of tests failing, but that will change over time. Writing a first, simple, read-only server should only take a few days.


- Florian

Florian,

Thanks for your reply. I see that I have misinterpreted the use of the
OpenCMIS Server Development Guide. Based on your response, I think it
is better for us to start from scratch. I have a some questions about
the implementation if we do start from scratch:

 - You say we need two classes, one derived from
AbstractServiceFactory, and one from AbstractCmisService - where can I
find the minimal required project code in which I can implement these
two classes without having to remove all the code that does not work
for us? I found this page
(https://www.apache.org/dyn/closer.lua/chemistry/opencmis/1.1.0/chemistry-opencmis-server-bindings-war-1.1.0.war)
through [OpenCMIS Downloads] -> [Web Archives] -> [OpenCMIS Server
War], but I can not see the contents of the war file because I am
currently working on a PC that can not open it.

 - Do the two classes that I need to implement correspond with the
classes "FileBridgeCmisServiceFactory.java" and
"FileBridgeCmisService.java" in the OpenCMIS Server Development Guide
project? If so, should I base my version of these two files on our
needs combined with the CMIS specifications, or should they mimic the
files from the OpenCMIS Server Development Guide project?

 - Should I be able to test my new implementation using the CMIS
workbench tool that the OpenCMIS Server Development Guide also uses?

Thanks in advance,

Tycho

Florian Müller schreef op 2017-10-06 12:41:
Hi Tycho,

The OpenCMIS server framework has been used by several companies to
build CMIS servers. (Alfresco, Nuxeo, SAP, IBM, OpenText, to name a
few.) They all have different back-ends with different structures or
no structure at all. It's absolutely feasible to implement a CMIS
server with the OpenCMIS server framework on top of another data
source.

The OpenCMIS Server Development Guide has originally been written for
a hands-on training. The participants should implement a CMIS server
within 3 hours. Because of the short period of time, we required a
backend all participants were familiar with - the file system.

I don't know what is better option for you, taking the code and
changing it or starting from scratch. Both have pros and cons.
In the end, you need two classes. One derived from
AbstractServiceFactory and one derived from AbstractCmisService.
Implement the read-only operations first.


- Florian


Hello,

In the project I am currently working on, I am trying to implement an
OpenCMIS Server to enable a CMIS connection to our repository.
Following the OpenCMIS Server Development Guide from the corresponding
Github page (see addendum links), I managed to get the Java project
running in Eclipse using Maven and a Tomcat server. In the default
state, this project works with a repository based on a file system
structure. In other words, it assumes a root and a directory/file
structure and uses the Java File class to simulate this logic.

However, the repository I am trying to connect to is an object storage
repository. This means that there is no mention of a file, or
directory. On top of this object storage we have an ElasticSearch
index in which some structure is defined (i.e. there is a file system
like structure through parent/child relationships in the index). I am
now wondering if it is possible to rewrite the provided code in such a
way that it can handle such an object instead of a Java File object.
My attempts thus far have been unsuccessful, but I have not changed
all the required parts of the project yet. After working mainly in the
"FilebridgeRepository.java" file, I noticed that removing the File
structure from that file raised errors in files higher up the chain,
because they expect a File object to be returned.

My question would then be: "Is it feasible to rewrite this project to
a project that can handle different object types?". If the only way to
do that is to rewrite the entire framework, I am unsure if it is even
worth it.

I will be glad to explain more details about my project if more
information is required.

Kind regards,

Tycho Nijon

-----
addendum:


[OpenCMIS Server Development Guide PDF]
https://github.com/cmisdocs/ServerDevelopmentGuide/blob/master/doc/OpenCMIS%20Server%20Development%20Guide.pdf?raw=true

[OpenCMIS Server Development Guide github]
https://github.com/cmisdocs/ServerDevelopmentGuide

--
Digitaal Archief Service

mob      +31 6 43599147
mail     ty...@divault.nl
web      www.divault.com
adres:   Schieland 18, 1948RM, Beverwijk

DiVault in beeld: VIDEO <http://youtu.be/Yse1JvmhJ64>



Deze e-mail inclusief inhoud is alleen voor de ontvanger van deze e-mail. Elk gebruik anders dan gebruik door de ontvanger is verboden en onrechtmatig. De verzender is niet verantwoordelijk voor de juiste en complete verzending
van de informatie noch voor enige vertraging.

This email and any attachments thereto may contain private, confidential,
and privileged material for the sole use of the intended recipient.
Any review, copying, or distribution of this email (or any attachments thereto) by others is strictly prohibited. If you are not the intended recipient, please contact the sender immediately and permanently delete the original and
 any copies of this email and any attachments thereto.
                              © DiVault 2015

Reply via email to