Hi Frédéric,
As mentionned in the link sent before, try to initialize your destination
array through a Java constructor :
var dstMembers = java.lang.reflect.Array.newInstance(java.lang.String,
srcBean.getDatasetById("member").size());
Regards,
--
Sebastien BAHLOUL
IAM / Security specialist
Ldap Synchronization Connector : http://lsc-project.org
Blog : http://sbahloul.wordpress.com/
2012/5/2 "POISSON Frédéric" <[email protected]>
> Hi Sébastien,
>
> Here is the java version used :
>
> # /usr/java/jdk1.6.0_23/bin/java -version
> java version "1.6.0_23"
> Java(TM) SE Runtime Environment (build 1.6.0_23-b05)
> Java HotSpot(TM) Client VM (build 19.0-b09, mixed mode, sharing)
> # rpm -qf /usr/java/jdk1.6.0_23/bin/java
> jdk-1.6.0_23-fcs.i586
> # rpm -qi jdk-1.6.0_23-fcs.i586
> Name : jdk Relocations: /usr/java
> Version : 1.6.0_23 Vendor: Oracle and/or its
> affiliates.
> Release : fcs Build Date: Sat 13 Nov 2010
> 01:54:11 AM CET
> Install Date: Tue 05 Jul 2011 11:39:53 AM CEST Build Host:
> jdk-lin-1586
> Group : Development/Tools Source RPM:
> jdk-1.6.0_23-fcs.src.rpm
> Size : 148955915 License: Copyright (c)
> 2010, Oracle and/or its affiliates. All rights reserved. Also under other
> license(s) as shown at the Description field.
> Signature : (none)
> Packager : Java Software <[email protected]>
> URL : http://java.sun.com/
> Summary : Java(TM) Platform Standard Edition Development Kit
> Description :
> The Java Platform Standard Edition Development Kit (JDK) includes both
> the runtime environment (Java virtual machine, the Java platform classes
> and supporting files) and development tools (compilers, debuggers,
> tool libraries and other tools).
>
> The JDK is a development environment for building applications, applets
> and components that can be deployed with the Java Platform Standard
> Edition Runtime Environment.
>
> This is not the latest one but this is a Sun/Oracle JDK.
>
> Do you have some sample code which are using a Java array ?
>
> And just for your information i have another dataset for mailLocalAddress
> using array which correctly work :
>
> <dataset>
> <name>mailLocalAddress</name>
>
> <policy>FORCE</policy>
> <forceValues>
> <string>
> <![CDATA[js:
> var mails ;
> if (srcBean.getDatasetById("proxyAddresses") )
> {
> mails = srcBean.getDatasetById("proxyAddresses").toArray();
> for (var i=0; i<mails.length; i++ )
> {
> mails[i] = mails[i].replace("smtp:","");
> }
> }
> mails
> ]]>
> </string>
> </forceValues>
> </dataset>
>
> Regards,
>
> Le 02/05/12, *Sébastien Bahloul * <[email protected]> a écrit :
>
> Hi Frédéric,
>
> First can you check that you are using a Sun/Oracle Java Runtime
> Environment 6/7 (and not an OpenJDK) ?
>
> And try to use a Java array instead of a Native java_script array as
> explained there :
>
> http://www.mozilla.org/rhino/ScriptingJava.html#creatingarrays
>
> java_script arrays should work, I will open an bug if you confirmed that
> using Java arrays fixed your issue !
>
> Regards,
> --
> Sebastien BAHLOUL
> IAM / Security specialist
> Ldap Synchronization Connector : http://lsc-project.org
> Blog : http://sbahloul.wordpress.com/
>
>
>
> 2012/5/2 "POISSON Frédéric" <[email protected]>
>
>> Hello,
>>
>> I'm testing LSC 2.0rc2 with a group membership synchronization
>> configuration between an Active Directory source to a OpenLDAP destination.
>> This configuration runs correctly with release 1.2, but when i import
>> inside lsc.xml configuration it failed on an java_script error
>> java.lang.ClassNotFoundException: sun.org.mozilla.rhino.ScriptableObject.
>>
>> See attachment for output error and here is the configuration of
>> uniqueMember attribute :
>>
>> Could you tell me if i made a mistake inside my lsc.xml ?
>>
>> <dataset>
>> <name>uniqueMember</name>
>> <policy>FORCE</policy>
>> <forceValues>
>> <string>
>> <![CDATA[js:
>> var dnRoot = "dc=example,dc=com";
>> var srcMembersNotFoundInDst = new Array();
>> var dstMembers = new Array();
>> var dnNoMembers = "uid=no_members,ou=Private," + dnRoot;
>> var srcMembers = new Array();
>> if ( srcBean.getDatasetById("member"))
>> {
>> srcMembers = srcBean.getDatasetById("member").toArray() ;
>> for (var i=0; i < srcMembers.length; i++ ) {
>> try {
>> var sam =
>> srcLdap.attribute(srcMembers[i], 'sAMAccountName').get(0);
>>
>> dstMembers.push(ldap.search("ou=People","(uid="+sam+")").get(0) + "," +
>> dnRoot)
>> }
>> catch (e) {
>> srcMembersNotFoundInDst.push(
>> srcMembers[i]);
>> }
>> }
>> if ( srcMembersNotFoundInDst.length > 0 ) srcMembers =
>> srcMembersNotFoundInDst.slice(0);
>> srcMembersNotFoundInDst = [];
>> for (var i=0; i < srcMembers.length; i++ ) {
>> try {
>> var cn = srcLdap.attribute(srcMembers[i],
>> 'cn').get(0);
>>
>> dstMembers.push(ldap.search("ou=Groups","(cn=" + cn + ")").get(0) + "," +
>> dnRoot)
>> }
>> catch (e) {
>> srcMembersNotFoundInDst[i]=srcMembers[i];
>> }
>> }
>> if ( dstMembers.length == 0) dstMembers.push(
>> dnNoMembers);
>> dstMembers
>> }
>> else
>> {
>> dnNoMembers
>> }
>> ]]>
>> </string>
>> </forceValues>
>> </dataset>
>>
>>
>> The error seems to be the java_script array which is given as value
>> instead of been taken as an multi valued attribute :
>> ..
>> uniqueMember: sun.org.mozilla.java_script.internal.NativeArray@78aa80
>>
>> ...
>>
>> It doesn't appear if i change script with "dstMembers[0]" or
>> "dstMembers[1]" result. In that case it only synchronize the first member
>> or second member of the Active Directory group.
>>
>> Is there a way to increase java_script debugging output ?
>>
>>
>> Thanks,
>>
>> --
>> *Frederic Poisson*
>>
>>
>> _______________________________________________________________
>> Ldap Synchronization Connector (LSC) - http://lsc-project.org
>>
>> lsc-users mailing list
>> [email protected]
>> http://lists.lsc-project.org/listinfo/lsc-users
>>
>>
> --
>
>
>
> *Frederic
> Poisson*
> ITD/I&E/ENG/MES/Messaging Engineering, LDAP/DNS Engineer
>
>
>
>
>
> tel.
> +33 2 23 28 42 67
> [email protected]
> Cesson
> Chene Germain 9 Rue du Chene Germain 35510 Cesson-Sevigne France
> www.orange-business.com
>
>
_______________________________________________________________
Ldap Synchronization Connector (LSC) - http://lsc-project.org
lsc-users mailing list
[email protected]
http://lists.lsc-project.org/listinfo/lsc-users