[
https://issues.apache.org/jira/browse/CMIS-523?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13444861#comment-13444861
]
Michael Dürig commented on CMIS-523:
------------------------------------
I agree with Jose. The solution in the patch is too ad-hoc. The individual
implementations of {{JcrNode}} should take care of this.
{{JcrConverter.setProperty()}} is just a utility method and should be concerned
about the node type.
> Inconsistency when updating properties
> --------------------------------------
>
> Key: CMIS-523
> URL: https://issues.apache.org/jira/browse/CMIS-523
> Project: Chemistry
> Issue Type: Bug
> Components: opencmis-server-jcr
> Affects Versions: OpenCMIS 0.6.0
> Reporter: Jose Carlos Campanero
> Assignee: Michael Dürig
> Attachments: AttachmentDocumentTypeHandler.java,
> jcr_properties.patch, JcrServiceFactoryDecorator.java,
> NodeSetNameInvocationHandler.java
>
>
> 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:
> {code}
> 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);
> {code}
> In contrast, when the document properties are updated by the method
> updateProperties in JcrNode is updated 'node', not the context node:
> {code}
> // 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);
> }
> {code}
> 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?
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira