68:
69: /*==========================================================================*/
70:
71: function get_type_string(p_datatype number,
72: p_rpcDescriptor fnd_adg_manage.rpcDescriptor)
73: return varchar2
74: as
75: begin
76:
93:
94: /*==========================================================================*/
95:
96: function is_supported_type(p_datatype number,
97: p_rpcDescriptor fnd_adg_manage.rpcDescriptor)
98: return boolean
99: as
100: l_type_string varchar2(255);
101: begin
122:
123: /*==========================================================================*/
124:
125: function get_inout_mode(p_inout number,
126: p_rpcDescriptor fnd_adg_manage.rpcDescriptor)
127: return varchar2
128: as
129: begin
130:
337: G_IS_VALID_STANDBY_TO_PRIMARY boolean := null;
338:
339: G_COMMIT_WAIT_SEQUENCE number := null;
340:
341: procedure validate_standby(p_rpcDescriptor fnd_adg_manage.rpcDescriptor) as
342: l_err number;
343: l_msg varchar2(255);
344:
345: begin
345: begin
346:
347: if ( not fnd_adg_support.is_standby )
348: then
349: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,
350: 'VALIDATE_IS_STANDBY');
351: end if;
352:
353: fnd_adg_manage.validate_standby_to_primary(l_err,l_msg,true);
349: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,
350: 'VALIDATE_IS_STANDBY');
351: end if;
352:
353: fnd_adg_manage.validate_standby_to_primary(l_err,l_msg,true);
354:
355: if ( l_err <> 0 )
356: then
357: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,
353: fnd_adg_manage.validate_standby_to_primary(l_err,l_msg,true);
354:
355: if ( l_err <> 0 )
356: then
357: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,
358: 'VALIDATE_STANDBY_TO_PRIMARY',
359: l_msg);
360: end if;
361:
360: end if;
361:
362: end;
363:
364: procedure validate_synonym(p_rpcDescriptor fnd_adg_manage.rpcDescriptor) as
365: begin
366:
367: if ( G_IS_VALID_SYNONYM is null )
368: then
366:
367: if ( G_IS_VALID_SYNONYM is null )
368: then
369: G_IS_VALID_SYNONYM :=
370: fnd_adg_manage.validate_rpc_synonym(p_rpcDescriptor);
371: end if;
372:
373: if ( G_IS_VALID_SYNONYM )
374: then
373: if ( G_IS_VALID_SYNONYM )
374: then
375: return;
376: else
377: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,'VALIDATE_SYNONYM');
378: end if;
379: end;
380:
381: procedure validate_timestamp(p_rpcDescriptor fnd_adg_manage.rpcDescriptor) as
377: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,'VALIDATE_SYNONYM');
378: end if;
379: end;
380:
381: procedure validate_timestamp(p_rpcDescriptor fnd_adg_manage.rpcDescriptor) as
382: begin
383:
384: if ( G_IS_VALID_TIMESTAMP is null )
385: then
383:
384: if ( G_IS_VALID_TIMESTAMP is null )
385: then
386: G_IS_VALID_TIMESTAMP :=
387: fnd_adg_manage.validate_rpc_timestamp(p_rpcDescriptor);
388: end if;
389:
390: if ( G_IS_VALID_TIMESTAMP )
391: then
390: if ( G_IS_VALID_TIMESTAMP )
391: then
392: return;
393: else
394: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,'VALIDATE_TIMESTAMP');
395: end if;
396: end;
397:
398: procedure validate_slave_rpc(p_rpcDescriptor fnd_adg_manage.rpcDescriptor)
394: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,'VALIDATE_TIMESTAMP');
395: end if;
396: end;
397:
398: procedure validate_slave_rpc(p_rpcDescriptor fnd_adg_manage.rpcDescriptor)
399: as
400: begin
401:
402: if ( not fnd_adg_support.is_primary )
400: begin
401:
402: if ( not fnd_adg_support.is_primary )
403: then
404: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,
405: 'VALIDATE_SLAVE_RPC',
406: 'Slave is not on primary');
407: end if;
408:
407: end if;
408:
409: if ( not fnd_adg_support.is_rpc_from_standby )
410: then
411: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,
412: 'VALIDATE_SLAVE_RPC',
413: 'Slave is not running as RPC');
414: end if;
415:
412: 'VALIDATE_SLAVE_RPC',
413: 'Slave is not running as RPC');
414: end if;
415:
416: fnd_adg_manage.handle_slave_rpc_debug;
417:
418: end;
419:
420: procedure wait_for_commit_from_slave(p_rpcDescriptor
417:
418: end;
419:
420: procedure wait_for_commit_from_slave(p_rpcDescriptor
421: fnd_adg_manage.rpcDescriptor)
422: as
423: begin
424:
425: -- procedure only generated [used] when method commit_wait is true.
425: -- procedure only generated [used] when method commit_wait is true.
426:
427: if ( fnd_adg_utility.is_commit_wait_enabled )
428: then
429: if ( not fnd_adg_manage.wait_for_commit_count
430: (p_rpcDescriptor,G_COMMIT_WAIT_SEQUENCE) )
431: then
432: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,
433: 'HANDLE_COMMIT_WAIT_SLAVE_RPC',
428: then
429: if ( not fnd_adg_manage.wait_for_commit_count
430: (p_rpcDescriptor,G_COMMIT_WAIT_SEQUENCE) )
431: then
432: fnd_adg_manage.raise_rpc_exec_error(p_rpcDescriptor,
433: 'HANDLE_COMMIT_WAIT_SLAVE_RPC',
434: 'Timeout waiting for data');
435: end if;
436: end if;
437:
438: end;
439:
440: procedure handle_commit_wait_on_slave(p_rpcDescriptor
441: fnd_adg_manage.rpcDescriptor)
442: as
443: begin
444:
445: -- procedure only generated [used] when method commit_wait is true.
445: -- procedure only generated [used] when method commit_wait is true.
446:
447: if ( fnd_adg_utility.is_commit_wait_enabled )
448: then
449: fnd_adg_manage.increment_commit_count(p_rpcDescriptor);
450: end if;
451:
452: end;
453:
450: end if;
451:
452: end;
453:
454: procedure validate_rpc(p_rpcDescriptor fnd_adg_manage.rpcDescriptor,
455: p_use_commit_wait boolean default false)
456: as
457: begin
458: validate_standby(p_rpcDescriptor);
458: validate_standby(p_rpcDescriptor);
459: validate_synonym(p_rpcDescriptor);
460: validate_timestamp(p_rpcDescriptor);
461:
462: fnd_adg_manage.handle_rpc_debug;
463:
464: if ( p_use_commit_wait and fnd_adg_utility.is_commit_wait_enabled )
465: then
466: G_COMMIT_WAIT_SEQUENCE := fnd_adg_manage.get_commit_wait_seq
462: fnd_adg_manage.handle_rpc_debug;
463:
464: if ( p_use_commit_wait and fnd_adg_utility.is_commit_wait_enabled )
465: then
466: G_COMMIT_WAIT_SEQUENCE := fnd_adg_manage.get_commit_wait_seq
467: (p_rpcDescriptor);
468: end if;
469:
470: end;
476: end;
477:
478: /*==========================================================================*/
479:
480: procedure generate_method_body(p_rpcDescriptor fnd_adg_manage.rpcDescriptor,
481: p_body_code in out nocopy clob,
482: p_arg_table charArray,p_is_function boolean,
483: p_function_return_type number,
484: p_is_slave boolean)
518: ';'||LF);
519: end if;
520:
521: dbms_lob.append(p_body_code,
522: 'l_rpcDescriptor fnd_adg_manage.rpcDescriptor;'||LF);
523:
524: dbms_lob.append(p_body_code,'begin'||LF);
525:
526: dbms_lob.append(p_body_code,
643:
644: /*==========================================================================*/
645:
646: procedure generate_method_definition(p_rpcDescriptor
647: fnd_adg_manage.rpcDescriptor,
648: p_overload number,
649: p_method_definition in out nocopy varchar2,
650: p_arg_table in out nocopy charArray,
651: p_is_function in out nocopy boolean,
801:
802: /*==========================================================================*/
803:
804: procedure generate_code_spec(p_rpcDescriptor
805: in out nocopy fnd_adg_manage.rpcDescriptor,
806: p_spec_code in out nocopy clob)
807: as
808: cursor c1(c_owner varchar2, c_package_name varchar2)
809: is select a.authid
929:
930: /*==========================================================================*/
931:
932: procedure generate_code_body(p_rpcDescriptor
933: in out nocopy fnd_adg_manage.rpcDescriptor,
934: p_body_code in out nocopy clob)
935: as
936: cursor c2(c_owner varchar2, c_package_name varchar2)
937: is select a.rpc_synonym_name,a.package_name,a.owner,
1508: as
1509: l_fnd_adg_package_rec fnd_adg_package%rowtype;
1510: l_spec_code clob;
1511: l_body_code clob;
1512: l_rpcDescriptor fnd_adg_manage.rpcDescriptor;
1513:
1514: l_remapMethodTokenTable remapMethodTokenArray ;
1515:
1516: begin