I don't know any software that do it directly, however, perhaps you can find it has an ESB (Enterprise Service Bus) module out as a Service Gateway.
If you do not find one, you can assemble it. It should be easy if you assemble has an ESB module.
An ESB is a software that allow to connect different or same services under the same bus. So you can expose the CMIS service, and under the hood the module requests the files from the WebDAV server.
It should be something as simple as:
service = new CMIS( aPortToServe );
legacy = new WebDAV( myLegacyServer );
while ( service→asRequest() ) {
request = service→getRequest();
if ( request→getType() == “I NEED A FILE” ) {
if ( legacy→fileExists( request→getFilenameRequested() ) )
request->deployFile ( legacy->getFile( request→getFilenameRequested() ) );
else
request→notFoundError();
} if ( request→getType() == “I WANT TO SAVE” )
legacy→save ( request→getFilenameRequested() , request→getData() );
else
request→unkowError();
request→done();
}
All the interchangeability infrastructure can be provided by the ESB.
Your work is just to map the common functionalities between the two protocols.
A good software to do it is Anypoint Studio, http://mulesoft.com/platform/studio , it includes the CMIS module yet.
Another choice is a datamapper software, Mule Software offer one too.
Perhaps you should be start to think about your business and software requirements. For example:
- If a file need to be found by a UUID instead the filename, how you will handle it?
WebDav doesn’t support UUID, so you can generate an UUID for every file and store into a database or you can generate the UUID only when the file has touched, if the UUID is requested for an untouched file the ESB can return an error, even the desired file really exists.
- Another problem is about inheriting the connection between software, such as timeout, bandwidth limits, filename encoding, corruption, etc.
You need an information systems professional.