[ 
https://issues.apache.org/jira/browse/JCR-2439?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12790776#action_12790776
 ] 

Sébastien Launay commented on JCR-2439:
---------------------------------------

For toString() methods I found the path very useful especially for nodes.

I also prefers getOrAdd* instead of put* or set* because put and set are 
semantically speaking writable methods.
In some framework like Avalon [1] (RIP :)) they use an additional createNew 
boolean parameter to create an object if necessary and I think that the two use 
cases of createNew are interesting.

What is done for files can also be done for resources like:
- Node setResource(Node parent, String mime, InputStream data)
- Node setResource(Node parent, String mime, Calendar date, InputStream data)

Here use of set fits naturally as the method always modifies the node and/or 
parent node.

[1] 
http://excalibur.apache.org/apidocs/org/apache/avalon/framework/configuration/Configuration.html#getChild(java.lang.String,%20boolean)

> More utility methods in JcrUtils
> --------------------------------
>
>                 Key: JCR-2439
>                 URL: https://issues.apache.org/jira/browse/JCR-2439
>             Project: Jackrabbit Content Repository
>          Issue Type: Improvement
>          Components: jackrabbit-jcr-commons
>            Reporter: Jukka Zitting
>            Priority: Minor
>
> I'd like to add at least the following utility methods to JcrUtils:
> For logging:
>     // Utility method to simplify log messages and debug prints:
>     // Node -> "name [type]"
>     // Property -> "@name = value(s)"
>     String toString(Item item)
> For making sure that a node exists:
>     // Returns the identified child node. If the child does not already exist,
>     // it is added using the default node type from the parent.
>     Node setNode(Node parent, String name)
>     // Same as above, but ensures that isNodeType(type) is true for the
>     // returned node, using addNode(name, type) or setPrimaryType(type)
>     // if needed.
>     Node setNode(Node parent, String name, String type)
> For adding (or setting, see above) nt:folder nodes:
>     // Adds a new nt:folder node with the given name
>     Node addFolder(Node parent, String name)
>     // Ensures that an nt:folder node with the given name exists
>     Node setFolder(Node parent, String name)
> For adding (or setting) nt:file nodes:
>     // Adds a new nt:file/nt:resource structure
>     // If the mime type contains a charset parameter, then the jcr:encoding 
> property is also set
>     Node addFile(Node parent, String name, String mime, InputStream data)
>     Node addFile(Node parent, String name, String mime, Calendar date, 
> InputStream data)
>     // Ensures that an nt:file/nt:resource structure exists with the given 
> data.
>     // Note that the type of a potential existing jcr:content node is not 
> modified
>     Node setFile(Node parent, String name, String mime, InputStream data)
>     Node setFile(Node parent, String name, String mime, Calendar date, 
> InputStream data)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to