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)

Reply via email to