Stefan Seifert created SLING-7165:
-------------------------------------
Summary: 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)