Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Incomplete
-
OpenCMIS 0.6.0
-
None
-
None
Description
Is it possible that errors arise when updating the properties of documents or folders?
For instance, DefaultDocumentTypeHandler makes use of the content node to set the property values from the type definition at node's creation:
public JcrNode createDocument(JcrFolder parentFolder, String name, Properties properties, ContentStream contentStream, VersioningState versioningState) { try { Node fileNode = parentFolder.getNode().addNode(name, NodeType.NT_FILE); if (versioningState != VersioningState.NONE) { fileNode.addMixin(NodeType.MIX_SIMPLE_VERSIONABLE); } Node contentNode = fileNode.addNode(Node.JCR_CONTENT, NodeType.NT_RESOURCE); contentNode.addMixin(NodeType.MIX_CREATED); // compile the properties JcrFolder.setProperties(contentNode, getTypeDefinition(), properties);
In contrast, when the document properties are updated by the method updateProperties in JcrNode is updated 'node', not the context node:
// Are there properties to update? PropertyUpdater propertyUpdater = PropertyUpdater.create(typeManager, getTypeId(), properties); JcrVersionBase jcrVersion = isVersionable() ? asVersion() : null; // Update properties. Checkout if required boolean autoCheckout = false; if (!propertyUpdater.isEmpty()) { autoCheckout = jcrVersion != null && !jcrVersion.isCheckedOut(); if (autoCheckout) { jcrVersion.checkout(); } // update the properties propertyUpdater.apply(node); }
Thus, when defining types derived from the base types with specific properties this causes errors since it indicates that the properties that must be updated are not defined in the node.
Maybe it is necessary to override this functionality in the derived types?