Issue #581 has been updated by David Coutadeur.

File reference581.patch added
% Done changed from 0 to 70

The problem maily comes from two java classes :
- src/main/java/org/lsc/AbstractSynchronize.java
- src/main/java/org/lsc/service/SyncReplSourceService.java

The run method in AbstractSynchronize calls respectively 
getSourceService().getBean(...) and task.getDestinationService().getBean(...) :

<pre>

        public boolean run(Entry<String, LscDatasets> id) {
                try {
                        IBean entry = 
task.getSourceService().getBean(id.getKey(), id.getValue(), true);
                        return run(entry);

[...]
        public boolean run(IBean entry) {
[...]

                        // Search destination for matching object
                        if(id != null) {
                                dstBean = 
task.getDestinationService().getBean(id.getKey(), id.getValue(), true);
                        } else {
                                LscDatasets entryDatasets = new LscDatasets();
                                for(String datasetName: 
entry.datasets().getAttributesNames()) {
                                        
entryDatasets.getDatasets().put(datasetName, entry.getDatasetById(datasetName));
                                }
                                dstBean = 
task.getDestinationService().getBean(entry.getMainIdentifier(), entryDatasets, 
true);
                        }
</pre>

The problem is there is not necessarily the pivots attributes in entry nor in 
entryDatasets. (well, there are if the pivots attributes are in the fetched 
attributes set)

Thus I propose a patch in SyncReplSourceService to create an union list 
containing : the fetched attributes [Union] the pivots attributes.
The patch is included here.
----------------------------------------
Bug #581: replacement of pivot attributes in destination does not work when 
pivots is not in fetched source attributes in async
http://tools.lsc-project.org/issues/581

Author: David Coutadeur
Status: Assigned
Priority: Low
Assigned to: David Coutadeur
Category: Core
Target version: 2.0.2
Problem in version: 2.0.1


Everything is in the title :
replacement of pivot attributes in destination does not work when pivots is not 
in fetched source attributes in async mode.

Example :

<asyncLdapDestinationService>
[...]
<baseDn>ou=Groups,dc=example,dc=com</baseDn>
<pivotAttributes>
 <string>entryDN</string>
</pivotAttributes>
<fetchedAttributes>
 <string>entryDN</string>
</fetchedAttributes>

[...]

<ldapDestinationService>
[...]
<getOneFilter>(&amp;(objectClass=structure)(entryDN={entryDN}))</getOneFilter>


If entryDN wouldn't have been in fetched attributes, the resulting filter 
should have been :
(&(objectClass=structure)(?entryDN={entryDN}))

This behaviour is not reproductable in sync mode. (just in async)


-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://tools.lsc-project.org/my/account
_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org

lsc-dev mailing list
[email protected]
http://lists.lsc-project.org/listinfo/lsc-dev

Reply via email to