Uploaded image for project: 'Chemistry (Retired)'
  1. Chemistry (Retired)
  2. CMIS-481

Cannot set a property to null

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • cmislib 0.4, cmislib 0.4.1
    • cmislib 0.5
    • python-cmislib
    • None

    Description

      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.

      Attachments

        Issue Links

          Activity

            People

              jpotts Jeffrey Taylor Potts
              jpotts Jeffrey Taylor Potts
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: