[ https://issues.apache.org/jira/browse/SLING-7165?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stefan Seifert resolved SLING-7165. ----------------------------------- Resolution: Fixed Completed: At revision: 1810138 > CAConfig Impl: Potential data loss when saving multiple nested configuration > lists > ---------------------------------------------------------------------------------- > > Key: SLING-7165 > URL: https://issues.apache.org/jira/browse/SLING-7165 > Project: Sling > Issue Type: Bug > Components: Extensions > Affects Versions: Context-Aware Configuration Impl 1.4.4 > Reporter: Stefan Seifert > Assignee: Stefan Seifert > Fix For: Context-Aware Configuration Impl 1.4.6 > > > as reported in https://wcm-io.atlassian.net/browse/WCON-39: > {quote} > The following porblem has been discovered by one of our teammates. Consider > the following issue. > * Config A has a list of objects let's call B, where B is an array of > objects, whereeach object in B is a label and list of objects let's call it > C. > * Create for each item in B, a list of items then save. > * Try to update the label in any item in B, as a result each sublist under > each object in B, will be deleted as a result. > * > *The problem is i found it in code, you delete all items in the first level, > and as a result in the second level. > {code} > public boolean persistConfigurationCollection(ResourceResolver > resourceResolver, String configResourceCollectionParentPath, > ConfigurationCollectionPersistData data) { > if (!this.config.enabled()) { > return false; > } else { > Resource configResourceParent = > this.getOrCreateResource(resourceResolver, > configResourceCollectionParentPath, data.getProperties()); > // you delete below all list of items. and subnodes of it > this.deleteChildren(configResourceParent); > Iterator var5 = data.getItems().iterator(); > while(var5.hasNext()) { > ConfigurationPersistData item = > (ConfigurationPersistData)var5.next(); > String path = configResourceParent.getPath() + "/" + > item.getCollectionItemName(); > this.getOrCreateResource(resourceResolver, path, > item.getProperties()); > } > this.commit(resourceResolver, configResourceCollectionParentPath); > return true; > } > } > {code} > {quote} -- This message was sent by Atlassian JIRA (v6.4.14#64029)