You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@chemistry.apache.org by "Ivan Vasiliev (JIRA)" <ji...@apache.org> on 2012/06/26 19:23:44 UTC

[jira] [Commented] (CMIS-523) Inconsistency when updating properties

    [ https://issues.apache.org/jira/browse/CMIS-523?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13401538#comment-13401538 ] 

Ivan Vasiliev commented on CMIS-523:
------------------------------------

+1
I'm trying to define custom type derived from document. I can't plug in custom properties:

- DefaultDocumentTypeHandler.createDocument is not open for extensions, so I need to copy and paste it
- JcrConverter.setProperty has issues with lookup of custom properties, which causing CmisStorageException: Cannot find a definition for the property named 'ra%3AModifiedBy' on the node
{code}
name = toJcrName(propertyData.getId());
{code}


Regardless that I'm registered custom types (see attached sources)
                
> 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
>
> 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: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira