[ https://issues.apache.org/jira/browse/SLING-11878?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17722777#comment-17722777 ]
Tomasz Niedźwiedź commented on SLING-11878: ------------------------------------------- [~sseifert] I've raised a PR [https://github.com/apache/sling-org-apache-sling-api/pull/48] > Clarify Javadoc on which methods allow a ModifiableValueMap to be changed > ------------------------------------------------------------------------- > > Key: SLING-11878 > URL: https://issues.apache.org/jira/browse/SLING-11878 > Project: Sling > Issue Type: Improvement > Components: API > Reporter: Tomasz Niedźwiedź > Priority: Major > > Hi, one of the users of AEM Rules for SonarQube has asked a question about > the {{ModifiableValueMap}} interface and the methods through which the map is > changeable. Here's the original [GitHub > issue|https://github.com/wttech/AEM-Rules-for-SonarQube/issues/237#issuecomment-1536213675]. > Whether the Sonar rule is valid or should be changed depends on the intended > way the MVM API should be used. I believe the current implementation of the > Sonar rule is based on a piece of Sling API Javadoc that I think could use > some clarification. > Looking at [the latest available version of the > Javadoc|https://sling.apache.org/apidocs/sling12/org/apache/sling/api/resource/ModifiableValueMap.html], > here's what it says about changing resources through {{ModifiableValueMap}} > instances: > {quote}The {{ModifiableValueMap}} is an extension of the > [{{ValueMap}}|https://sling.apache.org/apidocs/sling12/org/apache/sling/api/resource/ValueMap.html] > which allows to modify and persist properties. All changes to this map are > stored in the transient layer of the resource resolver or more precisely in > the transient layer of the resource provider managing this resource. > Once > [{{ResourceResolver.commit()}}|https://sling.apache.org/apidocs/sling12/org/apache/sling/api/resource/ResourceResolver.html#commit--] > is called, the changes are finally persisted. > *The modifiable value map is only changeable through one of these methods* > * *{{Map.put(Object, Object)}}* > * *{{Map.putAll(java.util.Map)}}* > * *{{Map.remove(Object)}}* > *The map is not modifiable through the collections provided by* > * *{{Map.entrySet()}}* > * *{{Map.keySet()}}* > * *{{Map.values()}}* > *And it can't be modified by these methods:* > * *{{Map.clear()}}*{quote} > Since the {{ModifiableValueMap}} interface implements {{{}java.util.Map{}}}, > it also comes with the following methods: > * {{replace}} > * {{replaceAll}} > I've done a quick test in AEM 6.5, by means of the Groovy console, and these > methods have the effect of modifying the map's underlying resource once the > session is saved/RR is committed. > Should these methods also be documented as valid? Or is there a reason they > shouldn't be called? -- This message was sent by Atlassian Jira (v8.20.10#820010)