<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I've re-puposed a working script-based attribute resolver but the re-purposed version (changing just the underlying attribute names) fails with the indicated error.<div><br></div><div>If you can spot something wrong or suggest further diagnosis work, please let me know.</div><div><br></div><div>Thank you,</div><div><br></div><div>David Bantz</div><div><br></div><div><div><br></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- Distinguish the values of employeeNumber from EDIR &amp; AD--&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;resolver:AttributeDefinition id="EDIRemployeeNumber" xsi:type="Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad" sourceAttributeID="employeeNumber"&gt;</font></div><div><font face="Monaco">&lt;resolver:Dependency ref="myLDAP" /&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;resolver:AttributeEncoder xsi:type="SAML1XMLObject" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" /&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;resolver:AttributeEncoder xsi:type="SAML2XMLObject" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"</font></div><div><font face="Monaco">name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName="EDIRemployeeNumber" /&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/resolver:AttributeDefinition&gt;</font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;resolver:AttributeDefinition id="ADemployeeNumber" xsi:type="Simple" xmlns="urn:mace:shibboleth:2.0:resolver:ad" sourceAttributeID="employeeNumber"&gt;</font></div><div><font face="Monaco">&lt;resolver:Dependency ref="uaADLDAP" /&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&lt;resolver:AttributeEncoder xsi:type="SAML1XMLObject" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" /&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;resolver:AttributeEncoder xsi:type="SAML2XMLObject" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"</font></div><div><font face="Monaco">name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName="ADemployeeNumber" /&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/resolver:AttributeDefinition&gt;</font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco">&nbsp; &nbsp; &lt;resolver:AttributeDefinition id="UDCID" xsi:type="Script" xmlns="urn:mace:shibboleth:2.0:resolver:ad"&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;resolver:Dependency ref="myLDAP" /&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;resolver:Dependency ref="uaADLDAP" /&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;resolver:Dependency ref="EDIRemployeeNumber" /&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;resolver:Dependency ref="ADemployeeNumber" /&gt;</font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;resolver:AttributeEncoder xsi:type="SAML1XMLObject" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" /&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;!-- OID is that of eduPersonTargetedID, which Banner docs state is appropriate attribute for UDCID value--&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;resolver:AttributeEncoder xsi:type="SAML2XMLObject" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName="bannerudcid" /&gt;</font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco">&lt;!-- Script attempts to provide UDCID if AD and/or EDIR return value of employeeNumber &nbsp;--&gt;</font></div><div><font face="Monaco">&lt;!-- If neither directory has a value in the attribute for UDCID, UDCID will have null value and not be released --&gt;</font></div><div><font face="Monaco">&lt;!-- Script presumes employeeNumber is single-valued directory attribute in edir and AD --&gt;</font></div><div><font face="Monaco">&lt;!-- If perchance the two sources have different value, the value from AD will take precedence --&gt;</font></div><div><font face="Monaco">&lt;!-- debug-level log messages contain directory values and final attribute value--&gt;</font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;Script&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;![CDATA[</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; importPackage(Packages.edu.internet2.middleware.shibboleth.common.attribute.provider);</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; importPackage(Packages.org.slf4j);</font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; logger = LoggerFactory.getLogger("edu.internet2.middleware.shibboleth.resolver.Script.scriptTest");</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; logger.debug("Starting UDCID Attribute Resolver Script:");</font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (UDCID == null)&nbsp;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{UDCID = new BasicAttribute("UDCID");}</font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; if (typeof EDIRemployeeNumber != "undefined" &amp;&amp; EDIRemployeeNumber != null &amp;&amp; EDIRemployeeNumber.getValues().size() !=0)</font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; { &nbsp; logger.debug("Oracle (EDIR) LDAP UDCID Values: " + EDIRemployeeNumber.getValues());</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; UDCID = EDIRemployeeNumber.getValues().get(0)</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (typeof ADemployeeNumber != "undefined" &amp;&amp; ADemployeeNumber != null &amp;&amp; ADemployeeNumber.getValues().size() !=0)</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;{ logger.debug("UA AD LDAP UDCID Values: " + ADemployeeNumber.getValues());</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UDCID = ADemployeeNumber.getValues().get(0) &nbsp; &nbsp; &nbsp; &nbsp;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; logger.debug("Completed UDCID value: " + UDCID.getValues());</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; logger.debug("Completed UDCID Attribute Resolver Script");</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]]&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp;&lt;/Script&gt;</font></div><div><font face="Monaco">&nbsp; &nbsp; &nbsp; &nbsp; &lt;/resolver:AttributeDefinition&gt;</font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco">---</font></div><div><font face="Monaco">14:42:33.273 - ERROR [edu.internet2.middleware.shibboleth.common.attribute.resolver.provider.attributeDefinition.ScriptedAttributeDefinition:135] - ScriptletAttributeDefinition UDCID unable to execute script</font></div><div><font face="Monaco">javax.script.ScriptException: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find function getValues. (&lt;Unknown Source&gt;#20)</font></div><div><font face="Monaco">…</font></div><div><font face="Monaco">Caused by: sun.org.mozilla.javascript.internal.EcmaError: TypeError: Cannot find function getValues. (&lt;Unknown Source&gt;#20)</font></div><div><br></div><div><br></div></div></body></html>