[ 
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)

Reply via email to