-
Type:
Improvement
-
Resolution: Fixed
-
Priority:
Minor
-
None
-
Affects Version/s: None
-
Component/s: Domain Model
-
None
We have two methods for deleting in the spec: deleteObject in the object service and deleteAllVersions in the versioning service. This design seems to be consistent, however I find it confusing:
The deleteObject in the object service does not delete a document, it deletes a version. To delete a document I need to call deleteAllVersions which is not part of the object service but part of the versioning service. And to delete a version I have to use the object service
To my understanding a typical repository has a notion of documents and versions and treats versions as a substructure of a document. Therefore I would expect that the object service deals with documents and the version service deals with versions. The domain model reflects this design to my understanding in the complete spec except the delete semantics. Why was it designed that way? I also would appreciate to see the versioning service as an optional component. A CMIS application that is not aware of versioning should have the possibility to delete a document in the repository. Currently it needs the versioning service just to do that.
The spec is also not very precise what deleteObject should do if the object only has a single version. Is the document deleted in this case or does the comment mean that there has to remain something or is there an exception thrown?