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

Reply via email to