Jonathan Clarke a ?crit :

> On 24/06/2009 09:56, Cl?ment OUDOT wrote:
>>> Cl?ment OUDOT a ?crit :
>>>>> Yes, the use of employeeNumber as pivot attribute doesn't a good
>>>>> idee...
>>>>>
>>>>>
>>>>> I change it by uid attribute.
>>>>>
>>>>>
>>>>> I have changed too lsc.tasks.salaries.srcService.filterAll to have 
>>>>> only
>>>>> entries of zimbra with a valid uid like this :
>>>>>
>>>>>
>>>>> lsc.tasks.salaries.srcService.filterAll =
>>>>> (&(objectClass=organizationalPerson) (uid=*))
>>>>>
>>>>>
>>>>> Now i have a problem when i run :
>>>>>
>>>>> ant lsc::synchronize -Dsynchronize.parameters="-c all -s all"
>>>>>
>>>>> the reponse is :
>>>>>
>>>>> Buildfile: build.xml
>>>>>
>>>>> lsc::init:
>>>>>
>>>>> lsc::prepare-env:
>>>>>       [echo] Copying xml and properties files
>>>>>       [copy] Copying 1 file to
>>>>> /home/pascal/lsc/lsc-salarie2-z2ldap/target/classes
>>>>>
>>>>> lsc::compile-resources:
>>>>>       [echo] Compiling resources
>>>>>
>>>>> lsc::compile-app:
>>>>>
>>>>> lsc::synchronize:
>>>>>       [java] 0    [main] WARN
>>>>> org.lsc.SimpleSynchronize.launchTask(SimpleSynchronize.java:230)   -
>>>>> Starting sync for salaries
>>>>>       [java] 586  [main] ERROR
>>>>> org.lsc.jndi.JndiServices.apply(JndiServices.java:554)   - Error 
>>>>> while
>>>>> modifying directory on entry
>>>>> uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org / 
>>>>> [Add
>>>>> attribute: objectclass: top, shadowAccount, inetOrgPerson, Add
>>>>> attribute: sn: Maurieras, Add attribute: cn: Pascal Maurieras]
>>>>>       [java] javax.naming.InvalidNameException:
>>>>> uid=,ou=Salaries,o=fal44,o=cdr44: [LDAP: error code 34 - invalid DN];
>>>>> remaining name 'uid=,ou=Salaries,o=fal44,o=cdr44'
>>>>>       [java]     at
>>>>> com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2932)
>>>>>       [java]     at
>>>>> com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2746)
>>>>>       [java]     at
>>>>> com.sun.jndi.ldap.LdapCtx.c_createSubcontext(LdapCtx.java:779)
>>>>>       [java]     at
>>>>> com.sun.jndi.toolkit.ctx.ComponentDirContext.p_createSubcontext(ComponentDirContext.java:319)
>>>>>  
>>>>>
>>>>>       [java]     at
>>>>> com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(PartialCompositeDirContext.java:248)
>>>>>  
>>>>>
>>>>>       [java]     at
>>>>> javax.naming.directory.InitialDirContext.createSubcontext(InitialDirContext.java:183)
>>>>>  
>>>>>
>>>>>       [java]     at
>>>>> org.lsc.jndi.JndiServices.apply(JndiServices.java:513)
>>>>>       [java]     at
>>>>> org.lsc.AbstractSynchronize.synchronize2Ldap(AbstractSynchronize.java:414)
>>>>>  
>>>>>
>>>>>       [java]     at
>>>>> org.lsc.SimpleSynchronize.launchTask(SimpleSynchronize.java:280)
>>>>>       [java]     at
>>>>> org.lsc.SimpleSynchronize.launch(SimpleSynchronize.java:172)
>>>>>       [java]     at org.lsc.Launcher.run(Launcher.java:128)
>>>>>       [java]     at org.lsc.Launcher.main(Launcher.java:111)
>>>>>       [java] 2213 [main] ERROR
>>>>> org.lsc.AbstractSynchronize.logActionError(AbstractSynchronize.java:475) 
>>>>>
>>>>> - Erreur rencontr?e sur l'identifiant
>>>>> uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org:
>>>>>       [java]
>>>>>       [java] dn:
>>>>> uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org
>>>>>       [java] changetype: add
>>>>>       [java] objectclass: top
>>>>>       [java] objectclass: shadowAccount
>>>>>       [java] objectclass: inetOrgPerson
>>>>>       [java] sn: Maurieras
>>>>>       [java] cn: Pascal Maurieras
>>>>>       [java]
>>>>> ...
>>>>>
>>>>>
>>>>> The method srcBean.getAttributeValueById("uid") seems doesn't work in
>>>>> lsc.tasks.salaries.dn ?
>>>>>
>>>>>
>>>>> My new conf is :
>>>>>
>>>>>
>>>>> lsc.tasks.salaries.type = ldap2ldap
>>>>> lsc.tasks.salaries.srcService.pivotAttrs = uid
>>>>> lsc.tasks.salaries.srcService.filterId =
>>>>> (&(objectClass=organizationalPerson)(uid={uid}))
>>>>> lsc.tasks.salaries.srcService.filterAll =
>>>>> (&(objectClass=organizationalPerson) (uid=*))
>>>>> lsc.tasks.salaries.srcService.baseDn = ou=people
>>>>> lsc.tasks.salaries.srcService.attrs = uid cn sn givenName mail
>>>>> objectClass
>>>>> lsc.tasks.salaries.srcService = org.lsc.jndi.SimpleJndiSrcService
>>>>> lsc.tasks.salaries.object = org.lsc.objects.organizationalPerson
>>>>> lsc.tasks.salaries.dstService.pivotAttrs = uid
>>>>> lsc.tasks.salaries.dstService.filterId =
>>>>> (&(objectClass=inetOrgPerson)(uid={uid}))
>>>>> lsc.tasks.salaries.dstService.filterAll = (objectClass=inetOrgPerson)
>>>>> lsc.tasks.salaries.dstService.baseDn = ou=Salaries,o=fal44,o=cdr44
>>>>> lsc.tasks.salaries.dstService.attrs = uid cn sn givenName mail
>>>>> objectClass
>>>>> lsc.tasks.salaries.dstService = org.lsc.jndi.SimpleJndiDstService
>>>>> lsc.tasks.salaries.dn = "uid=" + 
>>>>> srcBean.getAttributeValueById("uid") +
>>>>> ",ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org"
>>>>> lsc.tasks.salaries.bean = org.lsc.beans.inetOrgPersonBean
>>>>> lsc.tasks = salaries
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> Hello,
>>>>
>>>> it seems that srcBean.getAttributeValueById("uid") returns nothing, so
>>>> DN
>>>> cannot be set. Are you sure your entry in source directory has a value
>>>> in
>>>> uid?
>>>>
>>>> Cl?ment.
>>>>
>>>>
>>>>
>>>>
>>> Yes uid has a value. The entrie in source directory of zimbra is :
>>>
>>> dn: uid=pascal.maurieras,ou=people,dc=nordet,dc=org
>>> cn: Pascal Maurieras
>>> displayName: Pascal Maurieras
>>> givenName: Pascal
>>> mail: pascal.maurieras at nordet.org
>>> objectClass: organizationalPerson
>>> objectClass: zimbraAccount
>>> objectClass: amavisAccount
>>> sn: Maurieras
>>> uid: pascal.maurieras
>>> zimbraId: f3b8699c-1fe9-4450-a672-030c91fbfc22
>>> zimbraMailDeliveryAddress: pascal.maurieras at nordet.org
>>> zimbraMailHost: mail.nordet.org
>>> zimbraMailStatus: enabled
>>> zimbraMailTransport: lmtp:mail.nordet.org:7025
>>>
>>
>> Ok I think I see the problem. You source objet is organizationalPerson:
>> lsc.tasks.salaries.object = org.lsc.objects.organizationalPerson
>>
>> But uid may not be defined in this object (it must be an attribute of
>> zimbraAccount objectClass).
>>
>> I think you need to edit the
>> src/impl/java/org/lsc/objects/organizationalPerson.java to add the "uid"
>> attribute.
>>
>> Can someone confirm that?
>
> Indeed, you are absolutely right Cl?ment. The "uid" attribute is not 
> allowed in organizationalPerson, but only in inetOrgPerson, as shown 
> here:
> http://ldap.akbkhome.com/index.php/attribute/uid.html
>
> This is why LSC is not returning it, since it has no knowledge of uid 
> in organizationalPerson.
>
> Captain, you can work around this by setting in your conf:
> lsc.tasks.salaries.object = org.lsc.objects.inetOrgPerson
>
> Jonathan
Thank's for your help.

I tried to change the class 
src/impl/java/org/lsc/objects/organizationalPerson.java, i add uid 
definition :

    /** Multivalued attribute : uid. */
    private List uid;

and i add the setter and getter as it describe at 
http://lsc-project.org/wiki/documentation/tutorials/openldaptoactivedirectory 
: 
<http://lsc-project.org/wiki/documentation/tutorials/openldaptoactivedirectory>


    /**
     * uid getter.
     * @return uid values
     */
    public final List getUid() {
        return uid;
    }

    /**
     * uid setter.
     * @param values uid values
     */
    public final void setUid(final List values) {
        uid = values;
    }

It is correct ?
After
    ant lsc::compile-app
and
    ant lsc::synchronize -Dsynchronize.parameters="-c all -s all"

The result is the same :

Buildfile: build.xml

lsc::init:

lsc::prepare-env:
     [echo] Copying xml and properties files

lsc::compile-resources:
     [echo] Compiling resources

lsc::compile-app:

lsc::synchronize:
     [java] 0    [main] WARN   
org.lsc.SimpleSynchronize.launchTask(SimpleSynchronize.java:230)   - 
Starting sync for salaries
     [java] 364  [main] ERROR  
org.lsc.jndi.JndiServices.apply(JndiServices.java:554)   - Error while 
modifying directory on entry 
uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org / [Add 
attribute: objectclass: top, shadowAccount, inetOrgPerson, Add 
attribute: sn: Maurieras, Add attribute: cn: Pascal Maurieras]
     [java] javax.naming.InvalidNameException: 
uid=,ou=Salaries,o=fal44,o=cdr44: [LDAP: error code 34 - invalid DN]; 
remaining name 'uid=,ou=Salaries,o=fal44,o=cdr44'
     [java]     at 
com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2932)
     [java]     at 
com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2746)
     [java]     at 
com.sun.jndi.ldap.LdapCtx.c_createSubcontext(LdapCtx.java:779)
     [java]     at 
com.sun.jndi.toolkit.ctx.ComponentDirContext.p_createSubcontext(ComponentDirContext.java:319)
     [java]     at 
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(PartialCompositeDirContext.java:248)
     [java]     at 
javax.naming.directory.InitialDirContext.createSubcontext(InitialDirContext.java:183)
     [java]     at org.lsc.jndi.JndiServices.apply(JndiServices.java:513)
     [java]     at 
org.lsc.AbstractSynchronize.synchronize2Ldap(AbstractSynchronize.java:414)
     [java]     at 
org.lsc.SimpleSynchronize.launchTask(SimpleSynchronize.java:280)
     [java]     at 
org.lsc.SimpleSynchronize.launch(SimpleSynchronize.java:172)
     [java]     at org.lsc.Launcher.run(Launcher.java:128)
     [java]     at org.lsc.Launcher.main(Launcher.java:111)
     [java] 2561 [main] ERROR  
org.lsc.AbstractSynchronize.logActionError(AbstractSynchronize.java:475)   
- Erreur rencontr?e sur l'identifiant 
uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org:
     [java]
     [java] dn: 
uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org
     [java] changetype: add
     [java] objectclass: top
     [java] objectclass: shadowAccount
     [java] objectclass: inetOrgPerson
     [java] sn: Maurieras
     [java] cn: Pascal Maurieras
     [java]

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://lists.lsc-project.org/pipermail/lsc-users/attachments/20090624/f71c4e6e/attachment-0001.htm>

Reply via email to