[
https://issues.apache.org/jira/browse/CMIS-1117?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrea Ligios updated CMIS-1117:
--------------------------------
Issue Type: Bug (was: Test)
> Using AtomPub binding I can create Folders calling createDocument
> -----------------------------------------------------------------
>
> Key: CMIS-1117
> URL: https://issues.apache.org/jira/browse/CMIS-1117
> Project: Chemistry
> Issue Type: Bug
> Components: opencmis-server
> Affects Versions: OpenCMIS 1.1.0
> Reporter: Andrea Ligios
> Priority: Minor
> Attachments: image-2021-05-18-00-03-11-323.png,
> image-2021-05-18-00-06-14-967.png, image-2021-05-18-00-20-40-800.png
>
>
> I've met CMIS a couple of days ago, please forgive me in case the question is
> naive.
> I have a test case that is trying to create a document by passing the
> `cmis:folder` `ObjectTypeId` (instead of `cmis:document`), and expects the
> test to fail.
> * With *Browser binding*, {color:#00875a}it fails with a
> CmisConstraintException{color}
> * With *WebService binding*, {color:#00875a}it fails with a
> CmisConstraintException{color}
> * With *AtomPub binding*,{color:#de350b} it creates a Folder, and then fails
> later with a CmisRuntimeException{color}
> While debugging the code, I've seen that *Browser binding* (along with
> *WebService binding*) has a `createDocument()` method in its [ObjectService
> implementation|https://github.com/apache/chemistry-opencmis/blob/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/browser/ObjectService.java#L88-L137]:
> !image-2021-05-18-00-03-11-323.png|width=984,height=914!
> The *AtomPub Binding*, instead, has a `create()` method in itsĀ [ObjectService
> implementation|https://github.com/apache/chemistry-opencmis/blob/trunk/chemistry-opencmis-server/chemistry-opencmis-server-bindings/src/main/java/org/apache/chemistry/opencmis/server/impl/atompub/ObjectService.java#L79-L158]:
> !image-2021-05-18-00-06-14-967.png|width=984,height=1609!
> While the `createDocument()` method can check if the `ObjectTypeId` passed is
> the proper one (`cmis:document`), and raise an error if an unexpected
> `ObjectTypeId` is passed, the `create()` method is agnostic about the object
> to create, and performs a Switch on the `ObjectTypeId` to detect the proper
> action to call.
> Hence, calling `createDocument()` with *AtomPub binding* and `cmis:folder`
> `ObjectTypeId` will result in calling the `create()` method, and then in the
> switch reading `cmis:folder` and calling the underlying `createFolder()`
> method, instead of the underlying `createDocument()` one.
> The folder will be created, then somewhere up in the chain[*] the error will
> be detected and will trigger a CmisRuntimeException, but that implies that,
> for the same test case, two different results should be expected according to
> the binding used.
> Could you please confirm me this is intended, and maybe shed some light on
> why the *AtomPub binding* is working with a different set of methods than the
> other bindings?
> [*]The fact that the object constructed in the `createDocument()` method is
> actually a document is checked in the [FolderImpl
> class|https://github.com/apache/chemistry-opencmis/blob/trunk/chemistry-opencmis-client/chemistry-opencmis-client-impl/src/main/java/org/apache/chemistry/opencmis/client/runtime/FolderImpl.java#L83-L103]
> makes me think this is the fallback for this problem, but I'd like some
> confirmation here:
> !image-2021-05-18-00-20-40-800.png|width=985,height=472!
> Thank you in advance
--
This message was sent by Atlassian Jira
(v8.3.4#803005)