[ 
https://issues.apache.org/jira/browse/CMIS-481?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jeff Potts closed CMIS-481.
---------------------------

    
> Cannot set a property to null
> -----------------------------
>
>                 Key: CMIS-481
>                 URL: https://issues.apache.org/jira/browse/CMIS-481
>             Project: Chemistry
>          Issue Type: Bug
>          Components: python-cmislib
>            Reporter: Jeff Potts
>            Assignee: Jeff Potts
>            Priority: Minor
>
> Currently, when you create a props dict and use it with either createDocument 
> or updateProperties, the code tries to guess the appropriate cmis element 
> name (cmis:propertyString, cmis:propertyDateTime, etc.) by performing a type 
> test on the value. It does not currently do a lookup to the type definition 
> to determine the property type (or even validate that the property name is 
> defined as part of the property).
> Additionally, there is no specific check for None. So if you want to try to 
> set a property to null there is no way to do it. The code will treat 
> properties set to None as a string. If you happen to be setting a string 
> prop, the value will be converted to the string "None". If you happen to be 
> setting any other data type, it is likely you'll see a runtime exception.
> >>> doc.properties['sc:level']
> 4
> >>> doc = doc.updateProperties({'sc:level':None})
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "/opt/src/chemistry/cmislib/src/cmislib/model.py", line 1947, in 
> updateProperties
>     **args)
>   File "/opt/src/chemistry/cmislib/src/cmislib/model.py", line 283, in put
>     self._processCommonErrors(result)
>   File "/opt/src/chemistry/cmislib/src/cmislib/model.py", line 315, in 
> _processCommonErrors
>     raise RuntimeException(error.status, error.url)
> cmislib.exceptions.RuntimeException: Error 500 at 
> http://localhost:8080/alfresco/s/cmis/s/workspace:SpacesStore/i/4d783751-0a96-4b01-96a1-2b3e03d45d90
> >>> doc = doc.updateProperties({'sc:difficulty':None})
> >>> doc.properties['sc:difficulty']
> u'None'
> In order to properly set a property to null, the code cannot rely on the type 
> test. It will have to do a lookup to the type definition so that it can 
> figure out which cmis property element name to use. As long as we're 
> incurring the cost of the type definition lookup, we might as well validate 
> that the property is defined.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to