[ 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.