Hi Sebastien,
I update configuration with this line but now i have this error :
May 03 11:05:33 - DEBUG - In object
"cn=groupe-l3,ou=Groups,dc=example,dc=com": Attribute "uniqueMember" is in
FORCE status
May 03 11:05:33 - ERROR - Error while synchronizing ID {usncreated=32988}:
java.lang.NullPointerException
May 03 11:05:33 - DEBUG - java.lang.NullPointerException
java.lang.NullPointerException: null
at
org.lsc.utils.JScriptEvaluator.evalToStringList(JScriptEvaluator.java:124)
~[lsc-core-2.0rc2.jar:na]
at
org.lsc.utils.ScriptingEvaluator.evalToStringList(ScriptingEvaluator.java:111)
~[lsc-core-2.0rc2.jar:na]
at org.lsc.beans.BeanComparator.getValuesToSet(BeanComparator.java:590)
~[lsc-core-2.0rc2.jar:na]
at
org.lsc.beans.BeanComparator.getUpdatedObject(BeanComparator.java:292)
~[lsc-core-2.0rc2.jar:na]
at
org.lsc.beans.BeanComparator.calculateModifications(BeanComparator.java:174)
~[lsc-core-2.0rc2.jar:na]
at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:709)
[lsc-core-2.0rc2.jar:na]
at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:633)
[lsc-core-2.0rc2.jar:na]
at org.lsc.SynchronizeTask.run(AbstractSynchronize.java:604)
[lsc-core-2.0rc2.jar:na]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown
Source) [na:1.6.0_31]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
[na:1.6.0_31]
at java.lang.Thread.run(Unknown Source) [na:1.6.0_31]
May 03 11:05:33 - ERROR - All entries: 1, to modify entries: 0, modified
entries: 0, errors: 1
May 03 11:05:33 - INFO - Starting clean for Groups
May 03 11:05:33 - ERROR - Empty or non existant destination (no IDs found)
Here is the dataset :
<dataset>
<name>uniqueMember</name>
<policy>FORCE</policy>
<forceValues>
<string>
<![CDATA[js:
var dnRoot = "dc=example,dc=com";
var srcMembersNotFoundInDst = new Array();
var dstMembers = java.lang.reflect.Array.newInstance(java.lang.String,
srcBean.getDatasetById("member").size());
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>
Any ideas,
Notice that yesterday i update Java to release 1.6.0_31.
Le 03/05/12, Sébastien Bahloul <[email protected]> a écrit :
> 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(tel:%2B33%202%2023%2028%2042%2067)
> > [email protected]
> >
> >
> > Cesson
> > Chene Germain 9 Rue du Chene Germain 35510 Cesson-Sevigne France
> > www.orange-business.com(http://www.orange-business.com/)
> >
> >
> >
> >
> >
> >
>
>
>
>
>
>
--
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(http://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