1: package body fnd_oid_diag as
2: /* $Header: AFSCODIB.pls 120.11.12010000.1 2008/07/25 14:21:12 appldev ship $ */
3: --
4: -------------------------------------------------------------------------------
5: is_dbms_ldap_available boolean :=false;
6: is_oid_enabled boolean :=false;
7: ldapSession dbms_ldap.session;
8: errNumber number := 1;
9: helpNumber number := 1;
3: --
4: -------------------------------------------------------------------------------
5: is_dbms_ldap_available boolean :=false;
6: is_oid_enabled boolean :=false;
7: ldapSession dbms_ldap.session;
8: errNumber number := 1;
9: helpNumber number := 1;
10: currentMethod varchar2(256);
11: statusStr varchar2(50);
50: procedure dasSearchTest(dasName in varchar2);
51: function checkEvent(eventName in varchar2) return varchar2;
52: function checkSub(subName in varchar2) return varchar2;
53: function getApp return varchar2;
54: procedure printAttr(ldapentry in dbms_ldap.message, attrName in varchar2);
55: procedure beginTable(title in varchar2, colspan in pls_integer default 2);
56: procedure endTable;
57: procedure insertRow(text in varchar2);
58: procedure insertColumn(text in varchar2);
161: return jtf_diagnostic_adaptutil.BOTH_MODE;
162: end getTestMode;
163: --
164: -------------------------------------------------------------------------------
165: procedure dbms_ldap_test is
166: context number := 1;
167: schema varchar2(30);
168: part1 varchar2(30);
169: part2 varchar2(30);
171: part1_type number;
172: object_number number;
173: trace_level pls_integer;
174: begin
175: currentMethod := 'dbms_ldap_test';
176: is_dbms_ldap_available := false;
177: beginTable('DBMS_LDAP test');
178: begin
179: dbms_utility.name_resolve('dbms_ldap', context, schema,part1, part2, dblink, part1_type, object_number);
172: object_number number;
173: trace_level pls_integer;
174: begin
175: currentMethod := 'dbms_ldap_test';
176: is_dbms_ldap_available := false;
177: beginTable('DBMS_LDAP test');
178: begin
179: dbms_utility.name_resolve('dbms_ldap', context, schema,part1, part2, dblink, part1_type, object_number);
180:
173: trace_level pls_integer;
174: begin
175: currentMethod := 'dbms_ldap_test';
176: is_dbms_ldap_available := false;
177: beginTable('DBMS_LDAP test');
178: begin
179: dbms_utility.name_resolve('dbms_ldap', context, schema,part1, part2, dblink, part1_type, object_number);
180:
181: if (schema<>'SYS' OR part1<>'DBMS_LDAP' OR part1_type<>9 )
175: currentMethod := 'dbms_ldap_test';
176: is_dbms_ldap_available := false;
177: beginTable('DBMS_LDAP test');
178: begin
179: dbms_utility.name_resolve('dbms_ldap', context, schema,part1, part2, dblink, part1_type, object_number);
180:
181: if (schema<>'SYS' OR part1<>'DBMS_LDAP' OR part1_type<>9 )
182: then
183: statusStr := 'FAILURE';
177: beginTable('DBMS_LDAP test');
178: begin
179: dbms_utility.name_resolve('dbms_ldap', context, schema,part1, part2, dblink, part1_type, object_number);
180:
181: if (schema<>'SYS' OR part1<>'DBMS_LDAP' OR part1_type<>9 )
182: then
183: statusStr := 'FAILURE';
184: errStr := constructErr('DBMS_LDAP resolves to '||schema||'.'||'DBMS_LDAP and not to PACKAGE SYS.DBMS_LDAP');
185: fixInfo := constructHelp('Check DBA_OBJECTS, if it is necesary recreate it Section 5, on Note 233436.1');
180:
181: if (schema<>'SYS' OR part1<>'DBMS_LDAP' OR part1_type<>9 )
182: then
183: statusStr := 'FAILURE';
184: errStr := constructErr('DBMS_LDAP resolves to '||schema||'.'||'DBMS_LDAP and not to PACKAGE SYS.DBMS_LDAP');
185: fixInfo := constructHelp('Check DBA_OBJECTS, if it is necesary recreate it Section 5, on Note 233436.1');
186: isFatal := 'TRUE';
187: insertRow('DBMS_LDAP resolves to '||schema||'.'||'DBMS_LDAP and not to PACKAGE SYS.DBMS_LDAP');
188: endTable;
183: statusStr := 'FAILURE';
184: errStr := constructErr('DBMS_LDAP resolves to '||schema||'.'||'DBMS_LDAP and not to PACKAGE SYS.DBMS_LDAP');
185: fixInfo := constructHelp('Check DBA_OBJECTS, if it is necesary recreate it Section 5, on Note 233436.1');
186: isFatal := 'TRUE';
187: insertRow('DBMS_LDAP resolves to '||schema||'.'||'DBMS_LDAP and not to PACKAGE SYS.DBMS_LDAP');
188: endTable;
189: return;
190:
191: end if;
193: exception
194: when others then
195: case when sqlcode = -6564 then
196: statusStr := 'FAILURE';
197: errStr := constructErr('Package DBMS_LDAP is not accessible');
198: fixInfo := constructHelp('See Section 5, on Note 233436.1');
199: isFatal := 'TRUE';
200: insertRow('Package DBMS_LDAP is not accessible');
201: endTable;
196: statusStr := 'FAILURE';
197: errStr := constructErr('Package DBMS_LDAP is not accessible');
198: fixInfo := constructHelp('See Section 5, on Note 233436.1');
199: isFatal := 'TRUE';
200: insertRow('Package DBMS_LDAP is not accessible');
201: endTable;
202: return;
203: else
204: statusStr := 'FAILURE';
201: endTable;
202: return;
203: else
204: statusStr := 'FAILURE';
205: errStr := constructErr('Error '||sqlerrm||'(' || sqlcode || ') during dbms_ldap validation');
206: fixInfo := constructHelp('Try to recreate the packaeg as on Note 233436.1');
207: isFatal := 'TRUE';
208: insertRow('Error '||sqlerrm||'(' || sqlcode || ') during dbms_ldap validation');
209: endTable;
204: statusStr := 'FAILURE';
205: errStr := constructErr('Error '||sqlerrm||'(' || sqlcode || ') during dbms_ldap validation');
206: fixInfo := constructHelp('Try to recreate the packaeg as on Note 233436.1');
207: isFatal := 'TRUE';
208: insertRow('Error '||sqlerrm||'(' || sqlcode || ') during dbms_ldap validation');
209: endTable;
210: return;
211: end case;
212: end;
210: return;
211: end case;
212: end;
213: -- being there doesn't mean it's working
214: -- For example, dbms_ldap depends on dbms_random, remove the last one, and dbms_ldap becomes invalid
215: begin
216: trace_level := dbms_ldap.get_trace_level;
217: exception when others then
218: statusStr := 'FAILURE';
212: end;
213: -- being there doesn't mean it's working
214: -- For example, dbms_ldap depends on dbms_random, remove the last one, and dbms_ldap becomes invalid
215: begin
216: trace_level := dbms_ldap.get_trace_level;
217: exception when others then
218: statusStr := 'FAILURE';
219: errStr := constructErr('Error '||sqlerrm||'(' || sqlcode || ') durint dbms_ldap validation');
220: fixInfo := constructHelp('Try to recreate the packaeg as on Note 233436.1');
215: begin
216: trace_level := dbms_ldap.get_trace_level;
217: exception when others then
218: statusStr := 'FAILURE';
219: errStr := constructErr('Error '||sqlerrm||'(' || sqlcode || ') durint dbms_ldap validation');
220: fixInfo := constructHelp('Try to recreate the packaeg as on Note 233436.1');
221: isFatal := 'TRUE';
222: insertRow('Error '||sqlerrm||'(' || sqlcode || ') durint dbms_ldap validation');
223: endTable;
218: statusStr := 'FAILURE';
219: errStr := constructErr('Error '||sqlerrm||'(' || sqlcode || ') durint dbms_ldap validation');
220: fixInfo := constructHelp('Try to recreate the packaeg as on Note 233436.1');
221: isFatal := 'TRUE';
222: insertRow('Error '||sqlerrm||'(' || sqlcode || ') durint dbms_ldap validation');
223: endTable;
224: return;
225: end;
226: is_dbms_ldap_available:=true;
222: insertRow('Error '||sqlerrm||'(' || sqlcode || ') durint dbms_ldap validation');
223: endTable;
224: return;
225: end;
226: is_dbms_ldap_available:=true;
227: insertRow(' SYS.DBMS_LDAP is available');
228: endTable;
229: end dbms_ldap_test;
230: --
223: endTable;
224: return;
225: end;
226: is_dbms_ldap_available:=true;
227: insertRow(' SYS.DBMS_LDAP is available');
228: endTable;
229: end dbms_ldap_test;
230: --
231: -------------------------------------------------------------------------------
225: end;
226: is_dbms_ldap_available:=true;
227: insertRow(' SYS.DBMS_LDAP is available');
228: endTable;
229: end dbms_ldap_test;
230: --
231: -------------------------------------------------------------------------------
232: procedure profile_test
233: is
360: if (not is_oid_enabled) then
361: jtf_diagnostic_adaptutil.addStringToReport('No additional test executed');
362:
363: else
364: dbms_ldap_test;
365: if (is_dbms_ldap_available) then
366: preference_test;
367:
368: if (ldapSession is not null) then
361: jtf_diagnostic_adaptutil.addStringToReport('No additional test executed');
362:
363: else
364: dbms_ldap_test;
365: if (is_dbms_ldap_available) then
366: preference_test;
367:
368: if (ldapSession is not null) then
369: /* Check whether the workflow events are enabled */
412: else
413: jtf_diagnostic_adaptutil.addStringToReport('Cannot connect to OiD, test terminated');
414: end if;
415: else
416: jtf_diagnostic_adaptutil.addStringToReport('Cannot continue testing, DBMS_LDAP is not available');
417: end if;
418: end if;
419:
420: if (tableOpen) then
585: select fnd_preference.eget('#INTERNAL','LDAP_SYNCH', 'EPWD', 'LDAP_PWD')
586: into appsPwd
587: from dual;
588:
589: result := dbms_ldap.compare_s(ld => ldapSession, dn => orclAppName,
590: attr => 'userpassword', value => appsPwd);
591:
592: if (result = dbms_ldap.COMPARE_FALSE) then
593: statusStr := 'FAILURE';
588:
589: result := dbms_ldap.compare_s(ld => ldapSession, dn => orclAppName,
590: attr => 'userpassword', value => appsPwd);
591:
592: if (result = dbms_ldap.COMPARE_FALSE) then
593: statusStr := 'FAILURE';
594: errStr := constructErr('Passwords do not match');
595: fixInfo := constructHelp('TThe Application password in E-Business Suite matches the one registered in OID');
596: isFatal := 'FALSE';
611: -------------------------------------------------------------------------------
612: procedure identityRealmTest is
613:
614: result pls_integer;
615: l_message dbms_ldap.message := null;
616: l_entry dbms_ldap.message := null;
617: l_attrs dbms_ldap.string_collection;
618:
619: begin
612: procedure identityRealmTest is
613:
614: result pls_integer;
615: l_message dbms_ldap.message := null;
616: l_entry dbms_ldap.message := null;
617: l_attrs dbms_ldap.string_collection;
618:
619: begin
620: currentMethod := 'identityRealmTest';
613:
614: result pls_integer;
615: l_message dbms_ldap.message := null;
616: l_entry dbms_ldap.message := null;
617: l_attrs dbms_ldap.string_collection;
618:
619: begin
620: currentMethod := 'identityRealmTest';
621:
618:
619: begin
620: currentMethod := 'identityRealmTest';
621:
622: result := dbms_ldap.search_s(ld => ldapSession, base => 'cn=Common,cn=Products,cn=OracleContext', scope => dbms_ldap.SCOPE_BASE,
623: filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
624:
625: -- get the first entry
626: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
622: result := dbms_ldap.search_s(ld => ldapSession, base => 'cn=Common,cn=Products,cn=OracleContext', scope => dbms_ldap.SCOPE_BASE,
623: filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
624:
625: -- get the first entry
626: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
627: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orcldefaultsubscriber');
628:
629: orclDefaultSubscriber := l_attrs(0);
630:
623: filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
624:
625: -- get the first entry
626: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
627: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orcldefaultsubscriber');
628:
629: orclDefaultSubscriber := l_attrs(0);
630:
631: if instr(orclAppName, orclDefaultSubscriber) = 0 then
654: l_base varchar2(256);
655: l_dn varchar2(256);
656: result pls_integer;
657: success pls_integer;
658: l_message dbms_ldap.message := NULL;
659: l_entry dbms_ldap.message := NULL;
660: l_attrs dbms_ldap.string_collection;
661: l_dn_norm varchar2(256);
662: l_orclAppName_norm varchar2(256);
655: l_dn varchar2(256);
656: result pls_integer;
657: success pls_integer;
658: l_message dbms_ldap.message := NULL;
659: l_entry dbms_ldap.message := NULL;
660: l_attrs dbms_ldap.string_collection;
661: l_dn_norm varchar2(256);
662: l_orclAppName_norm varchar2(256);
663: l_result1 pls_integer;
656: result pls_integer;
657: success pls_integer;
658: l_message dbms_ldap.message := NULL;
659: l_entry dbms_ldap.message := NULL;
660: l_attrs dbms_ldap.string_collection;
661: l_dn_norm varchar2(256);
662: l_orclAppName_norm varchar2(256);
663: l_result1 pls_integer;
664: l_result2 pls_integer;
667: currentMethod := 'containerTest';
668: success := 0;
669: l_base := 'cn=EBusiness,cn=Products,cn=OracleContext,' || orclDefaultSubscriber;
670:
671: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
672: scope => dbms_ldap.SCOPE_ONELEVEL, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
673:
674: -- get the first entry
675:
668: success := 0;
669: l_base := 'cn=EBusiness,cn=Products,cn=OracleContext,' || orclDefaultSubscriber;
670:
671: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
672: scope => dbms_ldap.SCOPE_ONELEVEL, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
673:
674: -- get the first entry
675:
676: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
672: scope => dbms_ldap.SCOPE_ONELEVEL, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
673:
674: -- get the first entry
675:
676: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
677:
678: while l_entry is not null loop
679: l_dn := dbms_ldap.get_dn(ldapSession, l_entry);
680: l_result1 := dbms_ldap_utl.normalize_dn_with_case(l_dn, 1, l_dn_norm);
675:
676: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
677:
678: while l_entry is not null loop
679: l_dn := dbms_ldap.get_dn(ldapSession, l_entry);
680: l_result1 := dbms_ldap_utl.normalize_dn_with_case(l_dn, 1, l_dn_norm);
681: l_result2 := dbms_ldap_utl.normalize_dn_with_case(orclAppName, 1, l_orclAppName_norm);
682: if ((l_dn_norm = l_orclAppName_norm) AND (l_result1 = DBMS_LDAP_UTL.SUCCESS) AND (l_result2 = DBMS_LDAP_UTL.SUCCESS)) then
683: success := 1;
676: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
677:
678: while l_entry is not null loop
679: l_dn := dbms_ldap.get_dn(ldapSession, l_entry);
680: l_result1 := dbms_ldap_utl.normalize_dn_with_case(l_dn, 1, l_dn_norm);
681: l_result2 := dbms_ldap_utl.normalize_dn_with_case(orclAppName, 1, l_orclAppName_norm);
682: if ((l_dn_norm = l_orclAppName_norm) AND (l_result1 = DBMS_LDAP_UTL.SUCCESS) AND (l_result2 = DBMS_LDAP_UTL.SUCCESS)) then
683: success := 1;
684: end if;
677:
678: while l_entry is not null loop
679: l_dn := dbms_ldap.get_dn(ldapSession, l_entry);
680: l_result1 := dbms_ldap_utl.normalize_dn_with_case(l_dn, 1, l_dn_norm);
681: l_result2 := dbms_ldap_utl.normalize_dn_with_case(orclAppName, 1, l_orclAppName_norm);
682: if ((l_dn_norm = l_orclAppName_norm) AND (l_result1 = DBMS_LDAP_UTL.SUCCESS) AND (l_result2 = DBMS_LDAP_UTL.SUCCESS)) then
683: success := 1;
684: end if;
685: l_entry := dbms_ldap.next_entry(ldapSession, l_entry);
678: while l_entry is not null loop
679: l_dn := dbms_ldap.get_dn(ldapSession, l_entry);
680: l_result1 := dbms_ldap_utl.normalize_dn_with_case(l_dn, 1, l_dn_norm);
681: l_result2 := dbms_ldap_utl.normalize_dn_with_case(orclAppName, 1, l_orclAppName_norm);
682: if ((l_dn_norm = l_orclAppName_norm) AND (l_result1 = DBMS_LDAP_UTL.SUCCESS) AND (l_result2 = DBMS_LDAP_UTL.SUCCESS)) then
683: success := 1;
684: end if;
685: l_entry := dbms_ldap.next_entry(ldapSession, l_entry);
686: end loop;
681: l_result2 := dbms_ldap_utl.normalize_dn_with_case(orclAppName, 1, l_orclAppName_norm);
682: if ((l_dn_norm = l_orclAppName_norm) AND (l_result1 = DBMS_LDAP_UTL.SUCCESS) AND (l_result2 = DBMS_LDAP_UTL.SUCCESS)) then
683: success := 1;
684: end if;
685: l_entry := dbms_ldap.next_entry(ldapSession, l_entry);
686: end loop;
687:
688: if success = 0 then
689: statusStr := 'FAILURE';
708: procedure svcContainerTest is
709:
710: l_base varchar2(256);
711: result pls_integer;
712: l_message dbms_ldap.message := NULL;
713: l_entry dbms_ldap.message := NULL;
714: l_attrs dbms_ldap.string_collection;
715:
716: begin
709:
710: l_base varchar2(256);
711: result pls_integer;
712: l_message dbms_ldap.message := NULL;
713: l_entry dbms_ldap.message := NULL;
714: l_attrs dbms_ldap.string_collection;
715:
716: begin
717: currentMethod := 'svcContainerTest';
710: l_base varchar2(256);
711: result pls_integer;
712: l_message dbms_ldap.message := NULL;
713: l_entry dbms_ldap.message := NULL;
714: l_attrs dbms_ldap.string_collection;
715:
716: begin
717: currentMethod := 'svcContainerTest';
718: l_base := 'cn=Services, cn=OracleContext';
716: begin
717: currentMethod := 'svcContainerTest';
718: l_base := 'cn=Services, cn=OracleContext';
719:
720: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
721: scope => dbms_ldap.SCOPE_ONELEVEL, filter => 'cn=EBusiness', attrs => l_attrs, attronly => 0, res => l_message);
722:
723: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
724: svcContainer := dbms_ldap.get_dn(ldapSession, l_entry);
717: currentMethod := 'svcContainerTest';
718: l_base := 'cn=Services, cn=OracleContext';
719:
720: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
721: scope => dbms_ldap.SCOPE_ONELEVEL, filter => 'cn=EBusiness', attrs => l_attrs, attronly => 0, res => l_message);
722:
723: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
724: svcContainer := dbms_ldap.get_dn(ldapSession, l_entry);
725:
719:
720: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
721: scope => dbms_ldap.SCOPE_ONELEVEL, filter => 'cn=EBusiness', attrs => l_attrs, attronly => 0, res => l_message);
722:
723: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
724: svcContainer := dbms_ldap.get_dn(ldapSession, l_entry);
725:
726: beginTable('The Service Container is created under the correct Realm');
727: insertRow(svcContainer);
720: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
721: scope => dbms_ldap.SCOPE_ONELEVEL, filter => 'cn=EBusiness', attrs => l_attrs, attronly => 0, res => l_message);
722:
723: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
724: svcContainer := dbms_ldap.get_dn(ldapSession, l_entry);
725:
726: beginTable('The Service Container is created under the correct Realm');
727: insertRow(svcContainer);
728: endTable;
738: -------------------------------------------------------------------------------
739: procedure appGuidTest is
740:
741: result pls_integer;
742: l_message dbms_ldap.message := NULL;
743: l_entry dbms_ldap.message := NULL;
744: l_attrs dbms_ldap.string_collection;
745:
746: begin
739: procedure appGuidTest is
740:
741: result pls_integer;
742: l_message dbms_ldap.message := NULL;
743: l_entry dbms_ldap.message := NULL;
744: l_attrs dbms_ldap.string_collection;
745:
746: begin
747: currentMethod := 'appGuidTest';
740:
741: result pls_integer;
742: l_message dbms_ldap.message := NULL;
743: l_entry dbms_ldap.message := NULL;
744: l_attrs dbms_ldap.string_collection;
745:
746: begin
747: currentMethod := 'appGuidTest';
748:
747: currentMethod := 'appGuidTest';
748:
749: l_attrs(0) := 'orclguid';
750:
751: result := dbms_ldap.search_s(ld => ldapSession, base => orclAppName,
752: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
753:
754: -- get the first entry
755:
748:
749: l_attrs(0) := 'orclguid';
750:
751: result := dbms_ldap.search_s(ld => ldapSession, base => orclAppName,
752: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
753:
754: -- get the first entry
755:
756: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
752: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
753:
754: -- get the first entry
755:
756: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
757: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclguid');
758:
759: appGuid := l_attrs(0);
760:
753:
754: -- get the first entry
755:
756: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
757: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclguid');
758:
759: appGuid := l_attrs(0);
760:
761: if l_attrs(0) is null then
780: -------------------------------------------------------------------------------
781: procedure realmGuidTest is
782:
783: result pls_integer;
784: l_message dbms_ldap.message := NULL;
785: l_entry dbms_ldap.message := NULL;
786: l_attrs dbms_ldap.string_collection;
787:
788: begin
781: procedure realmGuidTest is
782:
783: result pls_integer;
784: l_message dbms_ldap.message := NULL;
785: l_entry dbms_ldap.message := NULL;
786: l_attrs dbms_ldap.string_collection;
787:
788: begin
789: currentMethod := 'realmGuidTest';
782:
783: result pls_integer;
784: l_message dbms_ldap.message := NULL;
785: l_entry dbms_ldap.message := NULL;
786: l_attrs dbms_ldap.string_collection;
787:
788: begin
789: currentMethod := 'realmGuidTest';
790:
789: currentMethod := 'realmGuidTest';
790:
791: l_attrs(0) := 'orclguid';
792:
793: result := dbms_ldap.search_s(ld => ldapSession, base => orclDefaultSubscriber,
794: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
795:
796: -- get the first entry
797:
790:
791: l_attrs(0) := 'orclguid';
792:
793: result := dbms_ldap.search_s(ld => ldapSession, base => orclDefaultSubscriber,
794: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
795:
796: -- get the first entry
797:
798: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
794: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
795:
796: -- get the first entry
797:
798: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
799: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclguid');
800:
801: realmGuid := l_attrs(0);
802:
795:
796: -- get the first entry
797:
798: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
799: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclguid');
800:
801: realmGuid := l_attrs(0);
802:
803: if l_attrs(0) is null then
823: procedure provisionTest is
824:
825: result pls_integer;
826: l_base varchar2(1000);
827: l_message dbms_ldap.message := NULL;
828: l_entry dbms_ldap.message := NULL;
829: l_attrs dbms_ldap.string_collection;
830:
831: begin
824:
825: result pls_integer;
826: l_base varchar2(1000);
827: l_message dbms_ldap.message := NULL;
828: l_entry dbms_ldap.message := NULL;
829: l_attrs dbms_ldap.string_collection;
830:
831: begin
832: currentMethod := 'provisionTest';
825: result pls_integer;
826: l_base varchar2(1000);
827: l_message dbms_ldap.message := NULL;
828: l_entry dbms_ldap.message := NULL;
829: l_attrs dbms_ldap.string_collection;
830:
831: begin
832: currentMethod := 'provisionTest';
833:
832: currentMethod := 'provisionTest';
833:
834: l_base := 'orclODIPProfileName=' || realmGuid || '_' || appGuid || ',cn=Provisioning Profiles, cn=Changelog Subscriber, cn=Oracle Internet Directory';
835:
836: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
837: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
838:
839: -- get the first entry
840:
833:
834: l_base := 'orclODIPProfileName=' || realmGuid || '_' || appGuid || ',cn=Provisioning Profiles, cn=Changelog Subscriber, cn=Oracle Internet Directory';
835:
836: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
837: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
838:
839: -- get the first entry
840:
841: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
837: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
838:
839: -- get the first entry
840:
841: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
842:
843: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprofileinterfacename');
844: orclodipprofileinterfacename := l_attrs(0);
845:
839: -- get the first entry
840:
841: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
842:
843: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprofileinterfacename');
844: orclodipprofileinterfacename := l_attrs(0);
845:
846: l_attrs := dbms_ldap.get_values(ldapSession, l_entry,'orclodipprofileinterfacetype');
847: orclodipprofileinterfacetype := l_attrs(0);
842:
843: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprofileinterfacename');
844: orclodipprofileinterfacename := l_attrs(0);
845:
846: l_attrs := dbms_ldap.get_values(ldapSession, l_entry,'orclodipprofileinterfacetype');
847: orclodipprofileinterfacetype := l_attrs(0);
848:
849: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprovisioningappname');
850: orclodipprovisioningappname := l_attrs(0);
845:
846: l_attrs := dbms_ldap.get_values(ldapSession, l_entry,'orclodipprofileinterfacetype');
847: orclodipprofileinterfacetype := l_attrs(0);
848:
849: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprovisioningappname');
850: orclodipprovisioningappname := l_attrs(0);
851:
852: -- l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprofileinterfaceconnectinformation');
853: -- orclodipprofileinterfaceci := l_attrs(0);
848:
849: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprovisioningappname');
850: orclodipprovisioningappname := l_attrs(0);
851:
852: -- l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprofileinterfaceconnectinformation');
853: -- orclodipprofileinterfaceci := l_attrs(0);
854:
855: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprofileschedule');
856: orclodipprofileschedule := l_attrs(0);
851:
852: -- l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprofileinterfaceconnectinformation');
853: -- orclodipprofileinterfaceci := l_attrs(0);
854:
855: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprofileschedule');
856: orclodipprofileschedule := l_attrs(0);
857:
858: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclstatus');
859: orclstatus := l_attrs(0);
854:
855: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclodipprofileschedule');
856: orclodipprofileschedule := l_attrs(0);
857:
858: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclstatus');
859: orclstatus := l_attrs(0);
860:
861: if (orclodipprofileinterfacename is null) or (orclodipprofileinterfacetype is null) or ( orclodipprovisioningappname is null) /*or (orclodipprofileinterfaceci is null)*/ or (orclodipprofileschedule is null) or (orclstatus is null)
862: then
889:
890: result pls_integer;
891: l_base varchar2(1000);
892: attrName varchar2(100);
893: l_message dbms_ldap.message := NULL;
894: l_entry dbms_ldap.message := NULL;
895: l_attrs dbms_ldap.string_collection;
896: l_events dbms_ldap.string_collection;
897: l_status dbms_ldap.string_collection;
890: result pls_integer;
891: l_base varchar2(1000);
892: attrName varchar2(100);
893: l_message dbms_ldap.message := NULL;
894: l_entry dbms_ldap.message := NULL;
895: l_attrs dbms_ldap.string_collection;
896: l_events dbms_ldap.string_collection;
897: l_status dbms_ldap.string_collection;
898: l_processingstatus dbms_ldap.string_collection;
891: l_base varchar2(1000);
892: attrName varchar2(100);
893: l_message dbms_ldap.message := NULL;
894: l_entry dbms_ldap.message := NULL;
895: l_attrs dbms_ldap.string_collection;
896: l_events dbms_ldap.string_collection;
897: l_status dbms_ldap.string_collection;
898: l_processingstatus dbms_ldap.string_collection;
899:
892: attrName varchar2(100);
893: l_message dbms_ldap.message := NULL;
894: l_entry dbms_ldap.message := NULL;
895: l_attrs dbms_ldap.string_collection;
896: l_events dbms_ldap.string_collection;
897: l_status dbms_ldap.string_collection;
898: l_processingstatus dbms_ldap.string_collection;
899:
900: begin
893: l_message dbms_ldap.message := NULL;
894: l_entry dbms_ldap.message := NULL;
895: l_attrs dbms_ldap.string_collection;
896: l_events dbms_ldap.string_collection;
897: l_status dbms_ldap.string_collection;
898: l_processingstatus dbms_ldap.string_collection;
899:
900: begin
901: currentMethod := 'oidToAppTest';
894: l_entry dbms_ldap.message := NULL;
895: l_attrs dbms_ldap.string_collection;
896: l_events dbms_ldap.string_collection;
897: l_status dbms_ldap.string_collection;
898: l_processingstatus dbms_ldap.string_collection;
899:
900: begin
901: currentMethod := 'oidToAppTest';
902:
901: currentMethod := 'oidToAppTest';
902:
903: l_base := 'cn=OIDTOApplication,orclODIPProfileName=' || realmGuid || '_' || appGuid || ',cn=Provisioning Profiles, cn=Changelog Subscriber, cn=Oracle Internet Directory';
904:
905: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
906: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
907:
908: -- get the first entry
909:
902:
903: l_base := 'cn=OIDTOApplication,orclODIPProfileName=' || realmGuid || '_' || appGuid || ',cn=Provisioning Profiles, cn=Changelog Subscriber, cn=Oracle Internet Directory';
904:
905: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
906: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
907:
908: -- get the first entry
909:
910: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
906: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
907:
908: -- get the first entry
909:
910: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
911:
912: beginTable('Provisioning Profile Details for OID to Application');
913: printAttr(l_entry, 'orclodipprovisioningeventsubscription');
914: printAttr(l_entry, 'orclstatus');
930: procedure appToOIDTest is
931:
932: result pls_integer;
933: l_base varchar2(1000);
934: l_message dbms_ldap.message := NULL;
935: l_entry dbms_ldap.message := NULL;
936: l_attrs dbms_ldap.string_collection;
937:
938: begin
931:
932: result pls_integer;
933: l_base varchar2(1000);
934: l_message dbms_ldap.message := NULL;
935: l_entry dbms_ldap.message := NULL;
936: l_attrs dbms_ldap.string_collection;
937:
938: begin
939: currentMethod := 'ApplicationToOID';
932: result pls_integer;
933: l_base varchar2(1000);
934: l_message dbms_ldap.message := NULL;
935: l_entry dbms_ldap.message := NULL;
936: l_attrs dbms_ldap.string_collection;
937:
938: begin
939: currentMethod := 'ApplicationToOID';
940:
939: currentMethod := 'ApplicationToOID';
940:
941: l_base := 'cn=ApplicationToOID,orclODIPProfileName=' || realmGuid || '_' || appGuid || ',cn=Provisioning Profiles, cn=Changelog Subscriber, cn=Oracle Internet Directory';
942:
943: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
944: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
945:
946: -- get the first entry
947:
940:
941: l_base := 'cn=ApplicationToOID,orclODIPProfileName=' || realmGuid || '_' || appGuid || ',cn=Provisioning Profiles, cn=Changelog Subscriber, cn=Oracle Internet Directory';
942:
943: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
944: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
945:
946: -- get the first entry
947:
948: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
944: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
945:
946: -- get the first entry
947:
948: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
949:
950: beginTable('Provisioning Profile Details for Application to OID');
951: printAttr(l_entry, 'orclodipprovisioningeventpermittedoperations');
952: printAttr(l_entry, 'orclstatus');
995: procedure oidSubsTest is
996:
997: result pls_integer;
998: l_base varchar2(1000);
999: l_message dbms_ldap.message := NULL;
1000: l_entry dbms_ldap.message := NULL;
1001: l_dn varchar2(256);
1002: l_attrs dbms_ldap.string_collection;
1003:
996:
997: result pls_integer;
998: l_base varchar2(1000);
999: l_message dbms_ldap.message := NULL;
1000: l_entry dbms_ldap.message := NULL;
1001: l_dn varchar2(256);
1002: l_attrs dbms_ldap.string_collection;
1003:
1004:
998: l_base varchar2(1000);
999: l_message dbms_ldap.message := NULL;
1000: l_entry dbms_ldap.message := NULL;
1001: l_dn varchar2(256);
1002: l_attrs dbms_ldap.string_collection;
1003:
1004:
1005: begin
1006: currentMethod := 'oidSubsTest';
1006: currentMethod := 'oidSubsTest';
1007:
1008: l_base := 'cn=subscriptions,' || orclAppName;
1009:
1010: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
1011: scope => dbms_ldap.SCOPE_ONELEVEL, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1012:
1013: -- get the first entry
1014:
1007:
1008: l_base := 'cn=subscriptions,' || orclAppName;
1009:
1010: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
1011: scope => dbms_ldap.SCOPE_ONELEVEL, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1012:
1013: -- get the first entry
1014:
1015: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1011: scope => dbms_ldap.SCOPE_ONELEVEL, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1012:
1013: -- get the first entry
1014:
1015: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1016: beginTable('Application Subscription List Configuration');
1017: while l_entry is not null loop
1018: l_dn := dbms_ldap.get_dn(ldapSession, l_entry);
1019: insertRow(l_dn);
1014:
1015: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1016: beginTable('Application Subscription List Configuration');
1017: while l_entry is not null loop
1018: l_dn := dbms_ldap.get_dn(ldapSession, l_entry);
1019: insertRow(l_dn);
1020: l_entry := dbms_ldap.next_entry(ldapSession, l_entry);
1021: end loop;
1022:
1016: beginTable('Application Subscription List Configuration');
1017: while l_entry is not null loop
1018: l_dn := dbms_ldap.get_dn(ldapSession, l_entry);
1019: insertRow(l_dn);
1020: l_entry := dbms_ldap.next_entry(ldapSession, l_entry);
1021: end loop;
1022:
1023: endTable;
1024:
1035:
1036: result pls_integer;
1037: l_base varchar2(1000);
1038: l_app varchar2(256);
1039: l_message dbms_ldap.message := NULL;
1040: l_entry dbms_ldap.message := NULL;
1041: l_attrs dbms_ldap.string_collection;
1042:
1043: begin
1036: result pls_integer;
1037: l_base varchar2(1000);
1038: l_app varchar2(256);
1039: l_message dbms_ldap.message := NULL;
1040: l_entry dbms_ldap.message := NULL;
1041: l_attrs dbms_ldap.string_collection;
1042:
1043: begin
1044: currentMethod := 'linkTest';
1037: l_base varchar2(1000);
1038: l_app varchar2(256);
1039: l_message dbms_ldap.message := NULL;
1040: l_entry dbms_ldap.message := NULL;
1041: l_attrs dbms_ldap.string_collection;
1042:
1043: begin
1044: currentMethod := 'linkTest';
1045:
1045:
1046: l_app := getApp;
1047: l_base := 'cn=' || l_app || ',' || svcContainer || ',' || orclDefaultSubscriber;
1048:
1049: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
1050: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1051:
1052: -- get the first entry
1053:
1046: l_app := getApp;
1047: l_base := 'cn=' || l_app || ',' || svcContainer || ',' || orclDefaultSubscriber;
1048:
1049: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
1050: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1051:
1052: -- get the first entry
1053:
1054: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1050: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1051:
1052: -- get the first entry
1053:
1054: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1055: beginTable('Service Instance is correctly linked to the Subscription Instance');
1056: insertRow('DN = ' || l_base);
1057:
1058: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclserviceinstancelocation');
1054: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1055: beginTable('Service Instance is correctly linked to the Subscription Instance');
1056: insertRow('DN = ' || l_base);
1057:
1058: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclserviceinstancelocation');
1059: orclserviceinstancelocation := l_attrs(0);
1060: insertRow('orclserviceinstancelocation = ' || orclserviceinstancelocation);
1061:
1062: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclservicesubscriptionlocation');
1058: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclserviceinstancelocation');
1059: orclserviceinstancelocation := l_attrs(0);
1060: insertRow('orclserviceinstancelocation = ' || orclserviceinstancelocation);
1061:
1062: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'orclservicesubscriptionlocation');
1063: orclservicesublocation := l_attrs(0);
1064: insertRow('orclservicesubscriptionlocation = ' || orclservicesublocation);
1065:
1066: endTable;
1092: l_base varchar2(1000);
1093: result pls_integer;
1094: success pls_integer;
1095: numberOfUsers pls_integer;
1096: l_message dbms_ldap.message := NULL;
1097: l_entry dbms_ldap.message := NULL;
1098: l_attrs dbms_ldap.string_collection;
1099:
1100: begin
1093: result pls_integer;
1094: success pls_integer;
1095: numberOfUsers pls_integer;
1096: l_message dbms_ldap.message := NULL;
1097: l_entry dbms_ldap.message := NULL;
1098: l_attrs dbms_ldap.string_collection;
1099:
1100: begin
1101: currentMethod := 'usersTest';
1094: success pls_integer;
1095: numberOfUsers pls_integer;
1096: l_message dbms_ldap.message := NULL;
1097: l_entry dbms_ldap.message := NULL;
1098: l_attrs dbms_ldap.string_collection;
1099:
1100: begin
1101: currentMethod := 'usersTest';
1102: success := 0;
1104: l_base := 'cn=ACCOUNTS,cn=subscription_data,cn=subscriptions,' || orclAppName;
1105:
1106: l_attrs(0) := 'uniquemember';
1107:
1108: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
1109: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1110:
1111: -- get the first entry
1112:
1105:
1106: l_attrs(0) := 'uniquemember';
1107:
1108: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
1109: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1110:
1111: -- get the first entry
1112:
1113: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1109: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1110:
1111: -- get the first entry
1112:
1113: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1114: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'uniquemember');
1115:
1116: if (l_attrs.count < 10) then
1117: numberOfUsers := l_attrs.count-1;
1110:
1111: -- get the first entry
1112:
1113: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1114: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'uniquemember');
1115:
1116: if (l_attrs.count < 10) then
1117: numberOfUsers := l_attrs.count-1;
1118: else
1136:
1137: l_base varchar2(1000);
1138: result pls_integer;
1139: success pls_integer;
1140: l_message dbms_ldap.message := NULL;
1141: l_entry dbms_ldap.message := NULL;
1142: l_attrs dbms_ldap.string_collection;
1143:
1144: begin
1137: l_base varchar2(1000);
1138: result pls_integer;
1139: success pls_integer;
1140: l_message dbms_ldap.message := NULL;
1141: l_entry dbms_ldap.message := NULL;
1142: l_attrs dbms_ldap.string_collection;
1143:
1144: begin
1145: currentMethod := 'dasSearchTest';
1138: result pls_integer;
1139: success pls_integer;
1140: l_message dbms_ldap.message := NULL;
1141: l_entry dbms_ldap.message := NULL;
1142: l_attrs dbms_ldap.string_collection;
1143:
1144: begin
1145: currentMethod := 'dasSearchTest';
1146: success := 0;
1147:
1148: l_base := dasName || ',cn=Groups,cn=OracleContext,' || orclDefaultSubscriber;
1149: l_attrs(0) := 'uniquemember';
1150:
1151: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
1152: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1153:
1154: -- get the first entry
1155:
1148: l_base := dasName || ',cn=Groups,cn=OracleContext,' || orclDefaultSubscriber;
1149: l_attrs(0) := 'uniquemember';
1150:
1151: result := dbms_ldap.search_s(ld => ldapSession, base => l_base,
1152: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1153:
1154: -- get the first entry
1155:
1156: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1152: scope => dbms_ldap.SCOPE_BASE, filter => 'objectclass=*', attrs => l_attrs, attronly => 0, res => l_message);
1153:
1154: -- get the first entry
1155:
1156: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1157: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'uniquemember');
1158:
1159: for i in 0..l_attrs.count-1 loop
1160: if instr(orclAppName, l_attrs(i)) <> 0 then
1153:
1154: -- get the first entry
1155:
1156: l_entry := dbms_ldap.first_entry(ldapSession, l_message);
1157: l_attrs := dbms_ldap.get_values(ldapSession, l_entry, 'uniquemember');
1158:
1159: for i in 0..l_attrs.count-1 loop
1160: if instr(orclAppName, l_attrs(i)) <> 0 then
1161: success := 1;
1220: return l_app;
1221: end getApp;
1222: --
1223: -------------------------------------------------------------------------------
1224: procedure printAttr(ldapentry in dbms_ldap.message, attrName in varchar2) is
1225:
1226: l_attrs dbms_ldap.string_collection;
1227: l_attrvalue varchar2(1000);
1228:
1222: --
1223: -------------------------------------------------------------------------------
1224: procedure printAttr(ldapentry in dbms_ldap.message, attrName in varchar2) is
1225:
1226: l_attrs dbms_ldap.string_collection;
1227: l_attrvalue varchar2(1000);
1228:
1229: begin
1230:
1227: l_attrvalue varchar2(1000);
1228:
1229: begin
1230:
1231: l_attrs := dbms_ldap.get_values(ldapSession, ldapentry, attrName);
1232:
1233: for i in 0..l_attrs.count-1 loop
1234: l_attrvalue := l_attrs(i);
1235: insertRow(attrName || ' = ' || l_attrvalue);