@@ -57,15 +57,26 @@ create or replace package body ut_event_manager as
5757 end if;
5858 end;
5959
60- procedure trigger_event( a_event_name t_event_name, a_event_object ut_event_item ) is
61- begin
62- if a_event_name is not null and g_event_listeners_index.exists(a_event_name)
63- then
64- for listener_number in 1 .. g_event_listeners_index(a_event_name).count loop
65- g_listeners(listener_number).on_event(a_event_name, a_event_object);
60+ procedure trigger_event( a_event_name t_event_name, a_event_object ut_event_item := null ) is
61+ procedure trigger_listener_event( a_listener_numbers t_listener_numbers, a_event_name t_event_name, a_event_object ut_event_item ) is
62+ l_listener_number t_listener_number;
63+ begin
64+ l_listener_number := a_listener_numbers.first;
65+ while l_listener_number is not null loop
66+ g_listeners(l_listener_number).on_event(a_event_name, a_event_object);
67+ l_listener_number := a_listener_numbers.next(l_listener_number);
6668 end loop;
69+ end;
70+ begin
71+ if a_event_name is not null then
72+ if g_event_listeners_index.exists(gc_all) then
73+ trigger_listener_event( g_event_listeners_index(gc_all), a_event_name, a_event_object );
74+ end if;
75+ if g_event_listeners_index.exists(a_event_name) then
76+ trigger_listener_event( g_event_listeners_index(a_event_name), a_event_name, a_event_object );
77+ end if;
6778 if a_event_name = ut_event_manager.gc_finalize then
68- dispose_listeners;
79+ dispose_listeners() ;
6980 end if;
7081 end if;
7182 end;
@@ -78,7 +89,7 @@ create or replace package body ut_event_manager as
7889 procedure add_events( a_event_names ut_varchar2_list, a_listener_pos binary_integer ) is
7990 begin
8091 for i in 1 .. a_event_names.count loop
81- add_event(a_event_names(i), a_listener_pos);
92+ add_event( a_event_names(i), a_listener_pos );
8293 end loop;
8394 end;
8495
@@ -98,10 +109,9 @@ create or replace package body ut_event_manager as
98109 if a_listener is not null then
99110 l_event_names := a_listener.get_supported_events();
100111 if l_event_names is not empty then
101- add_events( l_event_names, add_listener(a_listener ) );
112+ add_events( l_event_names, add_listener( a_listener ) );
102113 end if;
103114 end if;
104-
105115 end;
106116
107117end;
0 commit comments