I gave that class a quick look and it looks like it can be almost entirely
re-used.   By my estimation, I need to insert the sorting logic here.

    private Map<String, LscDatasets> convertSearchEntries(
            Cursor<SearchResponse> cursor) {
        Map<String, LscDatasets> converted = new HashMap<String,
LscDatasets>();
        for(SearchResponse sr : cursor) {
            if(sr instanceof SearchResultEntry) {
                SearchResultEntry sre = (SearchResultEntry) sr;
                converted.put(sre.getObjectName().toString(),
convertSearchEntry(sre));
            }
        }
        return converted;
    }

Unfortunately, I'm an Eclipse neophyte and am struggling a bit to get a
working project established.  I need to do some self-study before I can
actually build anything.

Hugh


On Tue, Apr 24, 2012 at 12:51 PM, Sébastien Bahloul <
[email protected]> wrote:

> Hi Hugh,
>
> If you have some time to try and implement it, start
> from SyncReplSourceService.java class and look at the getNextId() method
> which is storing results inside a temporary map. Don't
> implement IAsynchronousService if you do not plan to use the event based
> model, but use this idea inside a subclass of SimpleJndiService in which
> you should override the getBean method.
>
> You will have to build the same map and before returning any result, sort
> the map according the DN hierarchy through for example the following method
> :
>
>
> http://directory.apache.org/api/gen-docs/latest/apidocs/org/apache/directory/shared/ldap/model/name/Dn.html#isAncestorOf(org.apache.directory.shared.ldap.model.name.Dn
>
> Regards,
>
> --
> Sebastien BAHLOUL
> IAM / Security specialist
> Ldap Synchronization Connector : http://lsc-project.org
> Blog : http://sbahloul.wordpress.com/
>
>
>
> 2012/4/24 Hugh Kelley <[email protected]>
>
>> I do plan to run the sync as a recurring job (cron-like) but the
>> destination directory is currently empty.
>>
>> Is it AbstractSimpleJndiService that you are proposing I customize
>> (specifically the SearchResult property or thereabouts)?
>>
>> Hugh
>>
>>
>> On Tue, Apr 24, 2012 at 12:19 PM, Sébastien Bahloul <
>> [email protected]> wrote:
>>
>>> Hi Clement, Hugh,
>>>
>>> The builtin LDAP source service is effectively not designed to handle
>>> such use case. But it is possible to write a source service that will
>>> respect the LDAP hierarchy to send results in the correct order.
>>>
>>> Are you planning to run it on a periodical basis ? If so, we can preload
>>> the whole directory, sort entries thanks to a LDAP hierarchical sort class
>>> and manage the entries with that order.
>>>
>>> Regards,
>>> --
>>> Sebastien BAHLOUL
>>> IAM / Security specialist
>>> Ldap Synchronization Connector : http://lsc-project.org
>>> Blog : http://sbahloul.wordpress.com/
>>>
>>>
>>>
>>> Le 24 avril 2012 18:15, Clément OUDOT <[email protected]> a écrit :
>>>
>>>>  Le 24 avril 2012 18:07, Hugh Kelley <[email protected]> a écrit :
>>>> > I am trying to use LSC to essentially "mirror" a very hierarchical
>>>> (many
>>>> > nested OUs) production LDAP instance into an isolated pre-production
>>>> LDAP
>>>> > instance.    My current issue is that the updates are being generated
>>>> in
>>>> > reverse (or perhaps random) order, so that child objects creations are
>>>> > attempted before parent objects have been created.
>>>> >
>>>> > See the bottom of this post for an excerpt from my LDIF.   I know
>>>> there is a
>>>> > <sortedBy> option I can use at the connection level, but I don't know
>>>> of any
>>>> > LDAP attribute that could be used in a sort-by-depth manner.   Are
>>>> there any
>>>> > clever solutions for this?
>>>> >
>>>> > One ideaI am exploring is to sort by whenChanged, thinking that the
>>>> > most-recently changed objects should be the children.   However, this
>>>> > lsc.xml configuration appears to be invalid.
>>>> >
>>>> >     </ldapConnection>
>>>> >         . . . . . .
>>>> >       <binaryAttributes>
>>>> >         <string>objectGUID</string>
>>>> >       </binaryAttributes>
>>>> >       <sortedBy>whenChanged</sortedBy>
>>>> >     </ldapConnection>
>>>> >
>>>> > ERROR - org.lsc.exception.LscConfigurationException:
>>>> > javax.xml.bind.UnmarshalException
>>>> >  - with linked exception:
>>>> > [org.xml.sax.SAXParseException: cvc-complex-type.2.4.d: Invalid
>>>> content was
>>>> > found starting with element 'sortedBy'. No child element is expected
>>>> at this
>>>> > point.]
>>>> > org.lsc.exception.LscConfigurationException:
>>>> > javax.xml.bind.UnmarshalException
>>>> >
>>>>
>>>>
>>>> sortedBy option does not work in 2.0. An issue has been opened for the
>>>> next version: http://tools.lsc-project.org/issues/440
>>>>
>>>>
>>>> LSC is not a very good tool to synchronize a hierarchical tree, just
>>>> for the reason you mention in your mail: entries are get in a non
>>>> hierarchical order. Maybe someone in this list has done such
>>>> synchronization and can help us?
>>>>
>>>>
>>>> Clément.
>>>> _______________________________________________________________
>>>> Ldap Synchronization Connector (LSC) - http://lsc-project.org
>>>>
>>>> lsc-users mailing list
>>>> [email protected]
>>>> http://lists.lsc-project.org/listinfo/lsc-users
>>>>
>>>
>>>
>>
>> _______________________________________________________________
>> Ldap Synchronization Connector (LSC) - http://lsc-project.org
>>
>> lsc-users mailing list
>> [email protected]
>> http://lists.lsc-project.org/listinfo/lsc-users
>>
>>
>
_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org

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

Reply via email to